Tomcat使用Log4j替换java.util.logging实现日志输出

最近线上的项目运行异常了,发现tomcat的输出日志catalina.out文件过大,无法打开的情况。造成这个问题的原因是,tomcat默认使用的是java自带的日志接口java -Djava.util.logging.config.file,它不能使用日期或文件大小进行分割,日积月累导致写入的文件过大,进而影响到我们的系统的运行。
那么如何解决这种问题呢?查看tomcat官网(http://tomcat.apache.org/tomcat-7.0-doc/logging.html#Using_Log4j)的资料发现我们可以使用log4j来替换Tomcat默认使用的日志框架。具体操作步骤如下:
1.在你的tomcat的lib目录($CATALINA_BASE/lib)下新建log4j.properties,内容如下:

log4j.rootLogger = INFO, CATALINA

# Define all the appenders
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =/
  INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =/
  INFO, HOST-MANAGER

2.下载log4j的jar包,官方推荐的是v1.2.x的版本,我这里使用的是1.2.17的版本http://www.apache.org/dist/logging/log4j/1.2.17/
3.下载tomcat-juli.jar和tomcat-juli-adapters.jar两个文件http://www.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/
4.将log4j.jar和tomcat-juli-adapters.jar放到tomcat的lib目录下($CATALINA_BASE/lib)
5.将tomcat-juli.jar放到tomcat的bin目录下($CATALINA_BASE/bin/tomcat-juli.jar)
6.删除$CATALINA_BASE/conf/logging.properties文件,防止java.util.logging生成零长度的日志文件。
7.修改Tomcat中的conf/context.xml文件,将<Context>为<Context swallowOutput="true">。
8.重启tomcat,就可以看到java -Djava.util.logging.config.file变成了java -Dnop -Djava.util.logging.config.file,说明配置成功了。
具体log4j怎么配置,我这里就不详细介绍了。
版权声明:本文为博主原创文章,未经博主允许不得转载。原文地址:http://www.xttblog.com/?p=502

Tomcat使用Log4j替换java.util.logging实现日志输出

: » Tomcat使用Log4j替换java.util.logging实现日志输出

原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/251443.html

(0)
上一篇 2022年5月3日
下一篇 2022年5月3日

相关推荐

发表回复

登录后才能评论