tomcat在启动的时候,不管什么级别的日志,总是会以error级别输出,红殃殃的一大片,不方便调试,如下:
大部分解决方案都是删除server.xml中的如下配置项:
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
这样治标不治本,只是上图中的日志不再显示了而已。如果遇到其他一些级别的日志,还是会以error来输出。
最后,在tomcat官网找到一种解决方式,就是将tomcat的日志输出替换为log4j日志系统来输出(官网文档),可以准确输出各种级别的日志,具体步骤如下:
1.下载扩展jar
- log4j-1.2.17.jar (v1.2.x)
- tomcat-juli.jar
- tomcat-juli-adapters.jar
将log4j和tomcat-juli-adapters这两个包放置tomcat的lib下,将tomcat-juli放置tomcat的bin下,存在相同的jar包则替换。
2.创建配置文件
创建log4j.properties文件,放置tomcat的lib下,文件内容如下,可根据需要自己修改:
log4j.rootLogger=INFO, CATALINA,CONSOLE
# 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
3.删除原有的日志配置文件
删除tomcat的conf下的logging.properties文件
经过以上步骤,基本上就替换完成了,效果如下
可以看到tomcat已经按照我们想要的配置进行输出日志了,而且可以看到日志的级别,大大方便了我们开发调试。