精华内容
下载资源
问答
  • 用docker部署容器服务时,很自然地涉及到容器内外时间同步问题,通常最简单的解决方式就是将宿主机的时间信息文件挂载到容器内相应位置。但是,当你部署tomcat容器时,用同样的操作不能彻底解决此类问题,这是为什么...

    用docker部署容器服务时,很自然地涉及到容器内外时间同步问题,通常最简单的解决方式就是将宿主机的时间信息文件挂载到容器内相应位置。但是,当你部署tomcat容器时,用同样的操作不能彻底解决此类问题,这是为什么呢?让我们来一探究竟。

    #开始之前我们先下载最新的tomcat镜像

    docker pull tomcat:latest

    #下载好镜像之后,用docker命令创建一个容器

    docker run -p 8087:8080 -d tomcat:latest

    -p参数将容器中tomcat的8080端口链接到外部的8087端口

    #进入tomcat容器(其中e11a615959ef为对应的容器id)

    docker exec -ti e11a615959ef /bin/bash

    在容器中查看tomcat的时间信息如下:

    未进行时间同步之前,容器内的时间默认为UTC标准时间,滞后我大中华时间8个小时。

    #关闭刚刚创建的容器,将宿主机时间信息挂载到容器内

    docker stop e11a615959ef

    docker run -p 8087:8080 -v /etc/localtime:/etc/localtime:ro -d tomcat:latest

    再次进入容器,查看时间信息如下:

    2594a74e4cb876e3f0b52954b3e08568.png

    这一次,时间信息完美与宿主机同步,打开浏览器也能正常出现如下tomcat页面,可正常提供服务。

    1709f9851bae33bd49cb3e0a6929f5b0.png

    但是当我们在容器中查看tomcat的日志信息时,发现时间信息还是有点问题。

    5e107c73e9cbcf35336b0c5fd63ffc3a.png

    时间信息依旧滞后8小时,这是为什么呢?

    查阅资料后发现,tomcat和openjdk提供日志或web服务时用的不是/etc/localtime.ro中的时间信息,用的是/etc/timezone中的信息。查看容器中的/etc/timezone信息果然还是UTC。

    2b3c880dbe73d918f0a38fd74bd0fa3a.png

    找到了问题的症结,我们对症下药,在宿主机创建一个timezone文件来覆盖容器内的对应文件,宿主机创建timezone文件,内容为'Asia/Shanghai'。

    方法一:

    #挂载timezone文件,重新启动docker容器

    docker run -p 8087:8080 -v /mnt/web/war/timezone:/etc/timezone -v /etc/localtime:/etc/localtime:ro -d tomcat:latest

    #再次进入容器,查看log日志的时间信息,log日志的时间信息也与宿主机同

    8cc182caf1073d058c2e18185af21999.png

    当然日志时间不同步问题还有其他解决办法。

    方法二:

    在Dockfile构建tomcat容器时,在tomcat/bin/catalina.sh文件中修改tomcat JAVA_OPTS,添加如下内容

    JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+08"

    本篇内容在本人个人公众号上也已发布,欢迎关注本人微信公众号“勤菜鸟”。

    Ref:

    https://blog.lqdev.cn/2018/07/15/docker/docker-time-diff/

    展开全文
  • v6.7.2Log-pilot:0.9.7-filebeatKibana-oss:6.7.2 # oss代表开源版本Kubernetes v1.14.2Log-Pilot目前为止还不支持Elasticsearch、Kibana-oss组件v7.x以上版本,具体表现为Log-Pilot容器内部filebeat收集日志报错,...
    fd2de02737781cd8bc0887cec2be79d9.png

    1 系统环境说明

    • Elasticsearch:v6.7.2
    • Log-pilot:0.9.7-filebeat
    • Kibana-oss:6.7.2 # oss代表开源版本
    • Kubernetes v1.14.2

    Log-Pilot目前为止还不支持Elasticsearch、Kibana-oss组件v7.x以上版本,具体表现为Log-Pilot容器内部filebeat收集日志报错,提示格式不对之类的,具体查看https://github.com/AliyunContainerService/log-pilot/issues/235

    2 背景信息

    开发者在面对 Kubernetes 分布式集群下的日志需求时,常常会感到头疼,既有容器自身特性的原因,也有现有日志采集工具的桎梏,主要包括:

    • 容器本身特性:
      • 采集目标多:容器本身的特性导致采集目标多,需要采集容器内日志、容器 stdout。对于容器内部的文件日志采集,现在并没有一个很好的工具能够去动态发现采集。针对每种数据源都有对应的采集软件,但缺乏一站式的工具。
      • 弹性伸缩难:Kubernetes 是分布式的集群,服务、环境的弹性伸缩对于日志采集带来了很大的困难,无法像传统虚拟机环境下那样,事先配置好日志的采集路径等信息,采集的动态性以及数据完整性是非常大的挑战。
    • 现有日志工具的一些缺陷:
      • 缺乏动态配置的能力。目前的采集工具都需要事先手动配置好日志采集方式和路径等信息,因为它无法能够自动感知到容器的生命周期变化或者动态漂移,所以它无法动态地去配置。
      • 日志采集重复或丢失的问题。因为现在的一些采集工具基本上是通过 tail 的方式来进行日志采集的,那么这里就可能存在两个方面的问题:一个是可能导致日志丢失,比如采集工具在重启的过程中,而应用依然在写日志,那么就有可能导致这个窗口期的日志丢失;而对于这种情况一般保守的做法就是,默认往前多采集 1M 日志或 2M 的日志,那么这就又会可能引起日志采集重复的问题。
      • 未明确标记日志源。因为一个应用可能有很多个容器,输出的应用日志也是一样的,那么当我们将所有应用日志收集到统一日志存储后端时,在搜索日志的时候,我们就无法明确这条日志具体是哪一个节点上的哪一个应用容器产生的。

    本文档将介绍一种 Docker 日志收集工具 Log-Pilot,结合 Elasticsearch 和 Kibana 等工具,形成一套适用于 Kubernetes 环境下的一站式日志解决方案。

    2.1 组件介绍

    这里重点介绍下log-Pilot收集工具

    log-Pilot 是一个智能容器日志采集工具,它不仅能够高效便捷地将容器日志采集输出到多种存储日志后端,同时还能够动态地发现和采集容器内部的日志文件。

    针对前面提出的日志采集难题,Log-Pilot 通过声明式配置实现强大的容器事件管理,可同时获取容器标准输出和内部文件日志,解决了动态伸缩问题,此外,Log-Pilot 具有自动发现机制,CheckPoint 及句柄保持的机制,自动日志数据打标,有效应对动态配置、日志重复和丢失以及日志源标记等问题。

    目前 log-pilot 在 Github 完全开源,项目地址是 https://github.com/AliyunContainerService/log-pilot 。您可以深入了解更多实现原理。

    2.2 针对容器日志的声明式配置

    Log-Pilot 支持容器事件管理,它能够动态地监听容器的事件变化,然后依据容器的标签来进行解析,生成日志采集配置文件,然后交由采集插件来进行日志采集。

    在 Kubernetes 下,Log-Pilot 可以依据环境变量 aliyun_logs_$name = $path 动态地生成日志采集配置文件,其中包含两个变量:

    • $name 是我们自定义的一个字符串,它在不同的场景下指代不同的含义,在本场景中,将日志采集到 ElasticSearch 的时候,这个 $name 表示的是 Index。
    • 另一个是 $path,支持两种输入形式,stdout 和容器内部日志文件的路径,对应日志标准输出和容器内的日志文件。
      • 第一种约定关键字 stdout 表示的是采集容器的标准输出日志,如本例中我们要采集 tomcat 容器日志,那么我们通过配置标签 aliyun.logs.catalina=stdout 来采集 tomcat 标准输出日志。
      • 第二种是容器内部日志文件的路径,也支持通配符的方式,通过配置环境变量 aliyun_logs_access=/usr/local/tomcat/logs/*.log来采集 tomcat 容器内部的日志。当然如果你不想使用 aliyun 这个关键字,Log-Pilot 也提供了环境变量 PILOT_LOG_PREFIX 可以指定自己的声明式日志配置前缀,比如 PILOT_LOG_PREFIX: "aliyun,custom"。

    此外,Log-Pilot 还支持多种日志解析格式,通过 aliyun_logs_$name_format= 标签就可以告诉 Log-Pilot 在采集日志的时候,同时以什么样的格式来解析日志记录,支持的格式包括:none、json、csv、nginx、apache2 和 regxp。

    Log-Pilot 同时支持自定义 tag,我们可以在环境变量里配置 aliyun_logs_$name_tags="K1=V1,K2=V2",那么在采集日志的时候也会将 K1=V1 和 K2=V2 采集到容器的日志输出中。自定义 tag 可帮助您给日志产生的环境打上 tag,方便进行日志统计、日志路由和日志过滤。

    3 日志架构

    ef4f1bb7f733dbf57b0911cedebb47e4.png

    需要采集的日志分为2类:

    • 标准输出日志,例如nginx、tomcat、pod类打印到前台的日志等
    • 应用文件日志,例如php程序日志、业务代码输出的日志等

    4 日志收集

    4.1 部署Elasticsearch

    准备es-service.yaml文件

    apiVersion: v1kind: Servicemetadata:  name: elasticsearch-logging  namespace: kube-system  labels:    k8s-app: elasticsearch-logging    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcile    kubernetes.io/name: "Elasticsearch"spec:  ports:  - port: 9200    protocol: TCP    targetPort: db  selector:    k8s-app: elasticsearch-logging

    准备es-statefulset.yaml文件

    # RBAC authn and authzapiVersion: v1kind: ServiceAccountmetadata:  name: elasticsearch-logging  namespace: kube-system  labels:    k8s-app: elasticsearch-logging    addonmanager.kubernetes.io/mode: Reconcile---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata:  name: elasticsearch-logging  labels:    k8s-app: elasticsearch-logging    addonmanager.kubernetes.io/mode: Reconcilerules:- apiGroups:  - ""  resources:  - "services"  - "namespaces"  - "endpoints"  verbs:  - "get"---kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:  namespace: kube-system  name: elasticsearch-logging  labels:    k8s-app: elasticsearch-logging    addonmanager.kubernetes.io/mode: Reconcilesubjects:- kind: ServiceAccount  name: elasticsearch-logging  namespace: kube-system  apiGroup: ""roleRef:  kind: ClusterRole  name: elasticsearch-logging  apiGroup: ""---# Elasticsearch deployment itselfapiVersion: apps/v1kind: StatefulSetmetadata:  name: elasticsearch-logging  namespace: kube-system  labels:    k8s-app: elasticsearch-logging    version: v7.2.0    addonmanager.kubernetes.io/mode: Reconcilespec:  serviceName: elasticsearch-logging  replicas: 3  selector:    matchLabels:      k8s-app: elasticsearch-logging      version: v7.2.0  template:    metadata:      labels:        k8s-app: elasticsearch-logging        version: v7.2.0    spec:      tolerations:      - effect: NoSchedule        key: node-role.kubernetes.io/master      serviceAccountName: elasticsearch-logging      containers:      - image: quay.io/fluentd_elasticsearch/elasticsearch:v6.7.2        name: elasticsearch-logging        imagePullPolicy: Always        resources:          # need more cpu upon initialization, therefore burstable class          limits:            cpu: 1000m            memory: 3Gi          requests:            cpu: 100m            memory: 3Gi        ports:        - containerPort: 9200          name: db          protocol: TCP        - containerPort: 9300          name: transport          protocol: TCP        securityContext:          capabilities:            add:              - IPC_LOCK              - SYS_RESOURCE        volumeMounts:        - name: elasticsearch-logging          mountPath: /data        env:        - name: "http.host"          value: "0.0.0.0"        - name: "network.host"          value: "_eth0_"        - name: "bootstrap.memory_lock"          value: "false"        - name: "cluster.name"          value: "docker-cluster"        - name: "NAMESPACE"          valueFrom:            fieldRef:              fieldPath: metadata.namespace      #volumes:      #- name: elasticsearch-logging      #  emptyDir: {}      # Elasticsearch requires vm.max_map_count to be at least 262144.      # If your OS already sets up this number to a higher value, feel free      # to remove this init container.      initContainers:      - image: alpine:3.6        command: ["/sbin/sysctl", "-w", "vm.max_map_count=262144"]        name: elasticsearch-logging-init        securityContext:          privileged: true  volumeClaimTemplates:  - metadata:      name: elasticsearch-logging    spec:      accessModes: [ "ReadWriteOnce" ]      storageClassName: prod-sc      resources:        requests:          storage: 8Gi

    数据持久化我这里使用了storeageclass后端ceph分布式存储;当然也可以选择nfs作为存储,或者默认数据存储跟随pod的生命周期随之释放,如果选择默认把上面“#volumes:”那段注释打开,下面的volumeClaimTemplates那段注释了就行了

    4.2 部署Kibana

    准备kibana-service.yaml文件

    apiVersion: v1kind: Servicemetadata:  name: kibana-logging  namespace: kube-system  labels:    k8s-app: kibana-logging    kubernetes.io/cluster-service: "true"    addonmanager.kubernetes.io/mode: Reconcile    kubernetes.io/name: "Kibana"spec:  ports:  - port: 5601    protocol: TCP    targetPort: ui  selector:    k8s-app: kibana-logging

    准备kibana-deployment.yaml文件

    apiVersion: apps/v1kind: Deploymentmetadata:  name: kibana-logging  namespace: kube-system  labels:    k8s-app: kibana-logging    addonmanager.kubernetes.io/mode: Reconcilespec:  replicas: 1  selector:    matchLabels:      k8s-app: kibana-logging  template:    metadata:      labels:        k8s-app: kibana-logging      annotations:        seccomp.security.alpha.kubernetes.io/pod: 'docker/default'    spec:      containers:      - name: kibana-logging        image: docker.elastic.co/kibana/kibana-oss:6.7.2        securityContext:          runAsNonRoot: true          runAsUser: 1000        resources:          # need more cpu upon initialization, therefore burstable class          limits:            cpu: 1000m          requests:            cpu: 100m        env:          - name: ELASTICSEARCH_HOSTS            value: http://elasticsearch-logging:9200          - name: SERVER_NAME            value: kibana-logging          #- name: SERVER_BASEPATH          #  value: /api/v1/namespaces/kube-system/services/kibana-logging/proxy          - name: SERVER_REWRITEBASEPATH            value: "false"        ports:        - containerPort: 5601          name: ui          protocol: TCP        livenessProbe:          httpGet:            path: /api/status            port: ui          initialDelaySeconds: 5          timeoutSeconds: 10        readinessProbe:          httpGet:            path: /api/status            port: ui          initialDelaySeconds: 5          timeoutSeconds: 10

    4.3 部署Log-pilot

    准备log-pilot.yaml文件

    apiVersion: extensions/v1beta1kind: DaemonSetmetadata:  name: log-pilot  namespace: kube-system  labels:    k8s-app: log-pilotspec:  updateStrategy:    type: RollingUpdate  template:    metadata:      labels:        k8s-app: log-pilot    spec:      tolerations:      - key: node-role.kubernetes.io/master        effect: NoSchedule      serviceAccountName: elasticsearch-logging      containers:      - name: log-pilot        image: registry.cn-hangzhou.aliyuncs.com/acs/log-pilot:0.9.7-filebeat        env:          - name: "LOGGING_OUTPUT"            value: "elasticsearch"          - name: "ELASTICSEARCH_HOSTS"            value: "elasticsearch-logging:9200"          - name: "NODE_NAME"            valueFrom:              fieldRef:                fieldPath: spec.nodeName        volumeMounts:        - name: sock          mountPath: /var/run/docker.sock        - name: logs          mountPath: /var/log/filebeat        - name: state          mountPath: /var/lib/filebeat        - name: root          mountPath: /host          readOnly: true        - name: localtime          mountPath: /etc/localtime        securityContext:          capabilities:            add:            - SYS_ADMIN      terminationGracePeriodSeconds: 30      volumes:      - name: sock        hostPath:          path: /var/run/docker.sock      - name: logs        hostPath:          path: /var/log/filebeat      - name: state        hostPath:          path: /var/lib/filebeat      - name: root        hostPath:          path: /      - name: localtime        hostPath:          path: /etc/localtime

    LOGGING_OUTPUT:填写后端存储日志的服务类型,这里使用elasticsearch

    ELASTICSEARCH_HOSTS:这里填写elasticsearch地址和端口

    4.4 部署日志组件yaml文件

    上面已经准备了各组件的yaml文件,这里开始部署到k8s环境中

    $ ls -l 总用量 20-rw-r--r-- 1 root root  382 12月  3 18:08 es-service.yaml-rw-r--r-- 1 root root 3157 12月  4 11:33 es-statefulset.yaml-rw-r--r-- 1 root root 1537 12月  4 11:52 kibana-deployment.yaml-rw-r--r-- 1 root root  354 12月  3 18:17 kibana-service.yaml-rw-r--r-- 1 root root 1636 12月  3 18:15 log-pilot.yaml$ kubectl apply -f .

    查看pod启动情况

    $ kubectl get pods -n kube-system | grep -E "ela|log-pilot|kiba"elasticsearch-logging-0                     1/1     Running            0          12delasticsearch-logging-1                     1/1     Running            0          12delasticsearch-logging-2                     1/1     Running            0          12dkibana-logging-96c5c69b5-hmfcf              1/1     Running            0          12dlog-pilot-fm85f                             1/1     Running            0          12dlog-pilot-tfr7k                             1/1     Running            0          12d

    到目前为止,日志收集ELK已经部署完成,也都启动正常;但是还是无法收集到想要的日志,前面介绍Log-Pilot时候有提到Log-Pilot是声明式的配置,Log-Pilot 支持容器事件管理,它能够动态地监听容器的事件变化,然后依据容器的标签来进行解析,生成日志采集配置文件,然后交由采集插件来进行日志采集。

    所以我们需要在需要收集日志的pod声明配置容器标签,来让Log-Pilot动态监听日志的变化,下面来配置标准输出日志的pod和应用日志的pod

    4.5 配置pod日志标签

    4.5.1 配置标准输出ingress

    配置ingress-controller.yaml文件

    apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: nginx-ingress-controller  namespace: kube-system  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginxspec:    ......    spec:      ......      containers:          ......          env:            ......            - name: aliyun_logs_ingress              value: "stdout"

    aliyun_logs_ingress: 声明变量为标准输出“stdout”,前面针对容器日志的声明式配置也有详细的说明

    4.5.2 配置应用日志goproxy

    配置proxy_deployment.yml

    apiVersion: apps/v1beta1kind: Deploymentmetadata:  name: proxy-testspec:    ......    spec:      containers:      .......        env:        - name: aliyun_logs_goproxy          value: "stdout"        - name: aliyun_logs_access          value: "/data/modules/proxy_sandbox/log/*.log"

    aliyun_logs_ingress: 声明变量为标准输出“stdout”,前面针对容器日志的声明式配置也有详细的说明

    aliyun_logs_access: 声明变量为应用日志路径“/data/modules/proxy_sandbox/log/*.log”,支持模糊匹配,这里的路径指的是容器内日志文件的路径

    以上声明基本满足业务需求,如果需要更复杂的使用方式,可以参见Log-pilot官方说明 https://github.com/AliyunContainerService/log-pilot

    配置修改完成,最后从新部署下ingress和goproxy两个pod即可

    5 通过Kibana查看日志

    第一次打开,需要创建索引

    638ffed0c2877c6a46c59d7d893e3a2d.png

    创建标准输出日志的索引

    ed072dd6eb0e717e4a7a479e2eeb85bd.png
    0cfd8c8840c296057c50769efa8ce79f.png

    创建应用日志的索引

    fc81e657c312675efa81820c4157f7b1.png

    这里看到我们已经创建了2个不同索引

    05180e73d3a96a4e9b845123b5eaf6fa.png

    为了更好的区分应用日志,可以根据不同的应用,声明不同的标签就可,标签就是索引;在 Kubernetes 下,Log-Pilot 可以依据pod环境变量 aliyun_logs_$name = $path 动态地生成日志采集配置文件,$name 是我们自定义的一个字符串,将日志采集到ElasticSearch 的时候,这个 $name 表示的是 Index。

    展开全文
  • 今天无意间看了一下服务器,发现tomcat根目录下面有个叫jlx.log的日志文件竟然有15G这么大! 然后删除了重启了下tomcat又生成一个1M的这处文件,并且一直增大! 看了下里面的日志,发现全部都是Spring注解...
  • 1、Tomcat自带日志功能,即时你的...——如果你项目中的log4j指定打印到控制台,并且你开启的tomcat有控制台,那么这个时候你可以控制台观察到日志。——如果你用log4j来处理了Tomcat日志(具体需要你自己配置tom...

    1、Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志。

    2、你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat日志无关。

    ——如果你项目中的log4j指定打印到控制台,并且你开启的tomcat有控制台,那么这个时候你可以在控制台观察到日志。

    ——如果你用log4j来处理了Tomcat的日志(具体需要你自己配置tomcat的配置文件),那么Tomcat便会使用log4j来打印,但是这和你项目中的log4j仍然不是同一个log4j。

    3、关于异常日志的打印

    如果你在你的项目中处理了某个异常:

    try{int i = 1/0;

    }catch(Exception e) {

    e.printStackTrace();

    }

    A、那么这个异常信息会打印到你的控制台。你说你没有开控制台,是用服务的形式跑的?那么这个异常的信息你就看不见了。

    B、你在你的项目中直接throw的,并且没有任何地方处理这个异常,那么最后这个异常会被抛给你的容器——Tomcat,Tomcat这时会在localhost.日期.log文件中记录这个异常。

    C、你使用的是log4j:

    LogFactory.getLog(Logger.class).error("Thread:"+i+"-print:"+j+"-CurrentThread:"+Thread.currentThread());

    那么你应该去看看你的log4j配置文件中,看看里面写的要把这条错误信息打印在哪。

    ——如果是打印到控制台,那么就去控制台找。如果没有控制台,那么这个错误信息也就丢了。

    ——如果是写入某个文件,那当然就是在你的文件中了。

    4、控制台

    Tomcat默认也会往控制台输出日志,这部分日志和其catalina.日期.log文件中记录的是一致的。

    程序中的syso、e.printStackTrace(),以及log4j如果配置的往控制台输出日志,那么他们全部都会出现在控制台上,

    别看你eclipse里的控制台上有那么多日志,你要搞清楚他们不是同一个日志记录器写的。

    展开全文
  • 还有说用log4j进行切割,但是我切割的时候,发现项目的日志输出不到日志文件中。所以采用了这个。若有位仁兄实现,请给出答案。   安装cronolog 1、将cronolog-1.6.2.tar.gz 上传至/opt 目录 2、解压缩 ...

    文件中的配置修改,仅限制于tomcat6.现在已经有tomcat8了,其配置有所改变,请自行修改。还有说用log4j进行切割,但是我在切割的时候,发现项目的日志输出不到日志文件中。所以采用了这个。若有哪位仁兄实现,请给出答案。

     

    安装cronolog

    1、cronolog-1.6.2.tar.gz 上传至/opt 目录

    2、解压缩

    #解压缩

    tar -zxvf cronolog-1.6.2.tar.gz

    #修改文件夹

    mv cronolog-1.6.2/ cronolog

    3、安装

    #进入cronolog目录

        cd cronolog/

    ./configure

    make

    make install

    4、检验是否安装完成

    which cronolog

    #一般情况下显示为:/usr/local/sbin/cronolog 

    修改配置文件(或者直接替换)

    1、  停止tomcat

    2、  进入tomcat/bin 目录

    cd /usr/local/tomcat6/bin/

    3、修改配置文件

    vi catalina.sh

    # 注释掉355

    touch "$CATALINA_OUT"  修改为  #touch "$CATALINA_OUT"

    #修改 368369

    org.apache.catalina.startup.Bootstrap "$@" start \

    >> "$CATALINA_OUT" 2>&1 &

    修改为

    org.apache.catalina.startup.Bootstrap "$@" start  2>&1 \

    | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d_%H.out >> /dev/null &

    #修改 377378

    org.apache.catalina.startup.Bootstrap "$@" start \

    >> "$CATALINA_OUT" 2>&1 &

    修改为

    org.apache.catalina.startup.Bootstrap "$@" start  2>&1 \

    | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d_%H.out >> /dev/null &

     

    4、  重启tomcat

    ###############################################################################

    替换文件:

     

    附件中的catalina.sh 为已修改过的。将改文件直接替换即可。(需要比较该文件替换前后的执行权限。)

    展开全文
  • 转自祥牛!!!点击打开链接1、Tomcat自带日志功能,即时...——如果你项目中的log4j指定打印到控制台,并且你开启的tomcat有控制台,那么这个时候你可以控制台观察到日志。——如果你用log4j来处理了Tomcat日志...
  • 截止目前,运维圈内的人对tomcat肯定也有不少认知,那么我借用前车之鉴再来整理一遍,也是为了以后方便自己查看,所以加上了tomcat部分,重点还是ELK收集日志部分,此处注明。 tomcat是什么? Tomcat 服务器Ap
  • 1、Tomcat自带日志功能,即时你的项目中...——如果你项目中的log4j指定打印到控制台,并且你开启的tomcat有控制台,那么这个时候你可以控制台观察到日志。 ——如果你用log4j来处理了Tomcat日志(具体需要你自...
  • tomcat日志清理全攻略

    千次阅读 2017-09-29 11:38:43
    对于,很多初做运维或...日志在哪?哪些可以删除?怎么删除……一堆问题就接踵而来 简单的说一下,正题吧! 一般来说,catalina.out这个文件;对于,应用tomcat的网站服务器来说……应该是最大的了! 第一步,找到
  • 心中一阵叫苦,服务起不来就算了,可为啥日志也没有呢,我就查读取日本的配置在哪?1、我发现conf文件夹下有一个logging.properties的日志配置文件,可是在哪里设置加载进去的呢?2、最后发现在catali...
  • awstats安装:先去http://www.awstats.org/下载安装文件,并上传到服务器/opt,上传到随便cd /opttar -zxvf awstats-6.95.tar.gz 你现有项目的发布目录下面建立awstats/WEB-INF/cgi,并将awstats/wwwroot/cgi-bin...
  • 但是这个错误信息 并不能指出具体的错误在哪 想要看具体的错误在哪 有两种方法 1、 这就是tomcat的启动日志 可以具体的看错误信息 2、 在WEB-INF目录下建立目录classes 然后创建文件 logging.properties handlers =...
  • 只是spring配置文件的问题,不过不知道错在哪了 错误都是出现在entityManagerFactory这个类 以下是spring的配置文件 [code="java"] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:...
  • Apache Tomcat ... 目录结构 Directory Layout ... server.xml:核心配置文件,通过添加context标签来告诉tomcat你有哪些web应用以及他们在哪,也可以在 lib/:全局依赖的jar包 log/:日志目录 temps/:临时...
  • tomcat错误日志断断续续报ORA-00903: invalid table name,并无具体SQL与表名,需要排查段代码写入了无效表名, 可以通过ORACLE提供的errorstack追踪报错SQL。 由于生产数据无法取出,以下皆为测试环境测试还原...
  • 按照往常的方式,我们是修改tomcat日志配置文件的控制台编码 由UTF-8 改为 GBK。修改完之后,平淡的启动,发现还是乱码。 第一反应就是改错位置了?然后重新打开配置文件,发现没有改错位置。那么这又是什么原因...
  • tomcat错误日志断断续续报ORA-00903:invalidtablename,并无具体SQL与表名,需要排查段代码写入了无效表名, 可以通过ORACLE提供的errorstack追踪报错SQL。 由于生产数据无法取出,以下皆为测试环境测试还原生产...
  • 而后,log4j就出现了问题,我的log4j采用的是DailyRolling方式,每天0点一过会自动生成当天的日志文件。而现在的问题来了,0点一过,如果访问的URL的Context是不同的话,就会覆盖掉原来的日志内容。即0点5分用/...
  • 日志框架

    2019-06-28 11:00:51
    背景: 刚学Java的时候、对于程序的所有调试信息。我们都是通过Sysout直接输出到...2、针对部署在Tomcat的JAVA应用,也最好不要讲日志直接打印到服务器的控制台。这样会导致catalina.out文件特别大。 解决方案 所...
  • 上一篇已经说过项目的启动与停止。...tail命令格式: tail[参数][文件] 在查看日志之前我们必须的知道日志在哪。在我们的项目中总共有两个地方可以查看日志。 1.tomcat日志目录下。这里有tomcat记录的日志信息...
  • 说明Jar包出现了问题,可以查看控制台的日志信息,查看一个Jar包出错了,然后本地仓库删了该Jar包所在的文件,重新更新以下即可
  • 完全不知道需要的文件在哪 3、我能想到的方式,就是修改好应用配置文件,重新打包jar生成新的镜像,但。。。未免有点太复杂了吧!而且也没有解决我获取不同各类log4j日志的问题。  因为项目最终打包完毕后...
  •  只要你工程的根目录(src目录)下有一个Log4j的配置文件(里面配置了Appender),即使你不手动去加载这个配置文件(意思就是说你什么前提工作都不用做,也照样可以取得日志记录器!),Log4j也会自动去加载这个配置文件...
  • 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> ${LOG_PATH}/error-statisticserver-%d{yyyy-MM-dd}.%i.log <!-- 表示只保留最近30天的日志,以防止日志填满整个...
  • tomcat容器启动只报了个这个错,没有其他日志。 idea启动的,去查看日志呢? C:\Users\Admin.IntelliJIdea2017.1\system\tomcat\Unnamed_项目名称\logs 然后再根据日志文件进行分析即可。 ...
  • 问题排查:由于POI里面并没有把这里的错误信息输出到日志文件服务器上报错后,从后台日志文件中根本看不出什么。本地调试的时候,又没有报错,搞得我们一直以为是临时文件的没有正常读取导致的,而且我们把...
  • log4j weblogic 问题

    2009-01-21 15:08:48
    问题是这样的 最初在tomcat5.5下面开发...当将应用布到weblogic8.1下的时候,出现一个问题: 日志内容 全部控制台上打印出来,却没有创建日志文件,也没有任何错误异常。 位朋友遇到过此问题?或者知道怎...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

tomcat日志文件在哪