Java基础、中级、高级、架构面试资料

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

JAVA herman 4465浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

最近线上的项目运行异常了,发现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

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Tomcat使用Log4j替换java.util.logging实现日志输出