一、概述

  首先了解java的日志体系

  在JDK1.4后,sun公司增加了一个包为java.util.logging,简称为jul,用以对抗log4j。

  后续还有很多日志门面方案,但是tomcat使用了jul方式

1.1、tomcat的日志体系

  1.JDK的实现【JUL】:

    由于JDK的内部,默认提供了关于Log的配置文件,文件位于:Java\jre1.8\lib\logging.properties,

    而对比Tomcat的输出,我们的内容并没有输出到文件中。Log日志信息都输出到了Console中。

  2.tomcat的实现:

    tomcat默认使用JULI日志,也就是java自己的Log:java.util.logging.Logger。

    项目中我们可以使用log4j来打印自己的日志。tomcat打印自己的系统日志,log4j打印项目中的日志,两者是不冲突的,可以同时工作,也就是说tomcat\logs目录下的日志是由他们两个共同打印出来的

  3.tomcat默认使用JULI日志,如何验证呢:

    tomcat会加载\conf\logging.properties配置文件,在该配置文件中配置了java.util.logging.ConsoleHandler,使用的是java日志logging包下的类

    Tomcat中增加自定义的logger配置文件,这一过程是通过启动脚本catalina.sh(目录:apache-tomcat-8.5.31\bin\catalina.bat)来实现的,所以我们可以编辑catalina.sh文件,有两个参数:LOGGING_CONFIG、LOGGING_MANAGER   

# Set juli LogManager config file if it is present and an override has not been issued
if [ -z "$LOGGING_CONFIG" ]; then
if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
else
# Bugzilla 45585
LOGGING_CONFIG="-Dnop"
fi
fi if [ -z "$LOGGING_MANAGER" ]; then
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
fi

   即启动参数中包含两个-D参数 java.util.logging.config.file,java.util.logging.manager。

   4.Tomcat下默认的的配置文件:conf\logging.properties中,同时指定了多个handlers,分别对应的是tomcat\logs目录

  5.Tomcat 日志信息分为两类 :

    一是运行中的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息 。
    二是访问日志信息,它记录的访问的时间,IP ,访问的资料等相关信息。

默认 tomcat 不记录访问日志,如下方法可以使 tomcat 记录访问日志:
编辑 catalina/conf/server.xml文件:
注释掉<Valve className="org.apache.catalina.valves.AccessLogValve">之后,就看不到所有的请求参数了。
//server.xml的每一个元素都对应了Tomcat中的一个组件
AccessLogValve的作用是通过日志记录其所在的容器中处理的所有请求,记录的日志就是访问日志,每天的请求会写到一个日志文件里

1.2、tomcat小结

  1.Tomcat内部的日志实现,是使用JULI,

    Tomcat使用的日志配置文件:$CATALINA_BASE/conf/logging.properties
    Tomcat日志管理类默认使用的是JULI:LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

  2.Tomcat下相关的日志文件 
    Cataline引擎的日志文件,文件名catalina.日期.log 
    注:{catalina} 是 tomcat 的安装目录

  3.Tomcat下Web应用程序可以使用如下3种日志: 
    使用JDK提供的日志java.util.logging.
    使用Java Servlets规范中定义的日志javax.servlet.ServletContext.log(...)
    使用其他日志框架,如log4j

  4.也可以使用界面来管理tomcat的项目,此时需要在tomcat-user.xml中进行配置,然后访问:http://localhost:8081/manager/html

1.3、项目内部日志

  参看java的日志体系

1.4、修改tomcat日志路径

1.4.1、方式一、修改日志配置

  修改tomcat/conf下的logging.properties

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager. 4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.

  修改tomcat/bin/catalina.sh

if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi

  重启,查看日志即可

1.4.2、方式二、可以使用服务器环境变量   

  配置服务器的vm的环境变量

export CATALINA_OUT=/export/Logs/

005-tomcat日志体系的更多相关文章

  1. java 日志体系(三)log4j从入门到详解

    java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...

  2. ELK 收集 Tomcat日志以及修改Tomcat日志格式

    ELK 收集 Tomcat日志以及修改Tomcat日志格式 Tomcat日志 想要收集tomcat 日志 首先我们要对tomcat的日志有足够的了解 tomca日志分类 简单的说tomcat logs ...

  3. CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法

    CentOS7之按时间段截取指定的Tomcat日志到指定文件的方法 sed -n '/2016-11-02 15:00:/,/2016-11-02 15:05:/p' catalina.out > ...

  4. Tomcat 日志清除(含扩展AccessLogValve)

    1.tomcat的访问日志AccessLogs定期或者定量删除 a 开启tomcat访问日志 编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的 ...

  5. 自定义日志阅读器——包括了一个load取Tomcat日志的分析器

    最近在写往公司产品里添加Tomcat适配器,以支持Tomcat.有一些功能需要摘取到Tomcat的部分日志.没有合适的工具,也不想去网上找了,就自己写了一个. 简单的画了一下设计方案: 下面直接上代码 ...

  6. Oracle RAC的日志体系

    Oracle Clusterware 不像数据库那样,有丰富的视图.工具可以用来辅助诊断,它的日志和trace文件是唯一的选择.但不像Oracle只有alert日志和几种trace文件,Oracle ...

  7. linux下重启tomcat,日志查看

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 一:关闭tomcat 1.使用cd命令以及常用的tab补全命令进入到tomcat bin所在的目录(可以不用到此目录也行,楼主 ...

  8. logstash配合filebeat监控tomcat日志

    环境:logstash版本:5.0.1&&filebeat 5.0.1 ABC为三台服务器.保证彼此tcp能够相互连接. Index服务器A - 接收BC两台服务器的tomcat日志 ...

  9. Oracle RAC环境的日志体系

    转摘:http://blog.itpub.net/22664653/viewspace-722463/ 在Oracle RAC环境中比单个系统的日志体系要复杂:见下图: 简单介绍一下有关Oracle集 ...

随机推荐

  1. Nginx基本参数调优

    Nginx基本参数 #运行用户 user nobody; #worker进程的个数:通常应该为物理CPU核数减1: #可以为”auto”,实现自动设定(worker_processes  auto) ...

  2. linux网络编程之socket编程(十五)

    今天继续学习socket编程,这次主要是学习UNIX域协议相关的知识,下面开始: [有个大概的认识,它是来干嘛的] ①.UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍. ...

  3. Parameter 0 of method redisTemplate in org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration required a bean of type 'org.springframework.data.redis.connection.RedisConnectionFactor

    Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...

  4. React 零碎笔记

    1.对数组的操作(添加.更新.删除) const posts = [...this.state.posts]; posts.push(post); this.setState({posts}); =& ...

  5. SQL SERVER 语句转换格式函数Cast、Convert

    CAST.CONVERT都可以执行数据类型转换.在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST没有这个功能. CAST是ANSI兼容的,推荐使用CO ...

  6. 关于七牛云存储配置服务器CNAME的问题

    以前的图片什么的都存放在七牛云(免费的那款)上,七牛相比OSS就是只能创建bucket但不能创建文件夹,这个令人很烦.最近七牛发公告说存储文件的测试域名30天后不能使用了,那我那些存储的图片的所有外链 ...

  7. MySQL5.7版本安装(压缩包形式)

    1.去官网下载 MySQL 压缩包 2.配置环境变量 3.创建配置文件my.ini (放置 mysql-5.7.28-winx64 目录下) my.ini 配置文件 编写如下内容 [client] p ...

  8. [Cypress] install, configure, and script Cypress for JavaScript web applications -- part5

    Use the Most Robust Selector for Cypress Tests Which selectors your choose for your tests matter, a ...

  9. zookeeper 集群简单搭建,以及Error contacting service,It is probably not running问题解决

    第一步:现在http://www-eu.apache.org/dist/zookeeper/zookeeper-3.4.9/ 下载一个gz包,然后解压.当然,zookeeper 需要在java 的环境 ...

  10. PHP流程控制之if语句多种嵌套

    王思总同学我们在最开始的故事中讲到了他有两个秘书:一个生活秘书.一个工作秘书. 王思总同学在出行和项目中也是极度有计划性.他给自己的生活秘书和工作秘书分别指派了出差的行程:大理石平台支架 生活上: 先 ...