zl程序教程

您现在的位置是:首页 >  工具

当前栏目

005-tomcat日志体系

Tomcat日志 体系 005
2023-09-14 09:08:46 时间

一、概述

  首先了解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/