以前用Tomcat用得好好的,项目启动的时候错误日志都会输出到控制台,不知道从啥时候开始,Tomcat的详细错误日志不见了,只报一个万恶的Context [] startup failed due to previous errors,却找不到previous errors具体是啥东西,郁闷了很久,在网上查了一下资料,终于解决了这个问题。
Tomcat的官方原文在http://tomcat.apache.org/tomcat-6.0-doc/logging.html 可以找到。
首先找一个log4j的lib包放在tomcat的lib目录下,log4j包在基本的java项目里面都有,随便找一个扔进去应该就可以了,然后在lib目录新建一个log4j.properties文件,内容为:
去http://apache.freelamp.com/tomcat/tomcat-6/v6.0.26/bin/extras/ 下载两个文件:
tomcat-juli-adapters.jar放到tomcat的lib目录下,tomcat-juli.jar覆盖到tomcat的bin目录下,注意要下载对应你的tomcat版本的文件。
现在重启tomcat,详细的日志文件又回来了。
#########################下面部分是转载#################################################
http://www.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/extras/tomcat-juli.jar
其中v6.0.29为tomcat的版本号,请根据具体版本进行修改后下载,以保证最后正常效果。
接下去再保证已经有log4j的情况下。
tomcat6——-lib
| |——–tomcat-juli-adapters.jar
| |——–log4j.jar
| |——–log4j.properties
|
|—-bin
|——–tomcat-juli.jar
|—–xxx\WEB-INF
|—classes
|—-log4j.properties
######################################################################
最后把log4j.properties里的配置写好就可以了。
######################################################################
# Output the log info to the Java Console #
log4j.appender.Console = org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target = System.out
log4j.appender.Console.ImmediateFlush = true
log4j.appender.Console.Threshold = DEBUG
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n
# Save the log info to the log file #
log4j.appender.LogFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LogFile.File = ${catalina.base}/logs/info.log
log4j.appender.LogFile.Append = true
log4j.appender.LogFile.ImmediateFlush = false
log4j.appender.LogFile.Threshold = INFO
log4j.appender.LogFile.layout = org.apache.log4j.PatternLayout
log4j.appender.LogFile.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n
# Save the error info to the error file. A file one day. #
log4j.appender.ErrorFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.ErrorFile.File = ${catalina.base}/logs/error.log
log4j.appender.ErrorFile.Append = true
log4j.appender.ErrorFile.ImmediateFlush = false
log4j.appender.ErrorFile.Threshold = ERROR
log4j.appender.ErrorFile.layout = org.apache.log4j.PatternLayout
log4j.appender.ErrorFile.layout.ConversionPattern =<%-d{yyyy-MM-dd HH\:mm\:ss}> <%t> %l %n<%p> %m%n%n
客户要求:log4j只输出程序中添加的日志内容,屏蔽其他任何日志输出。
试着配置了一下log4j。
1。屏蔽 S2SH 框架中的 spring 组件的日志。
2。屏蔽 S2SH 框架中的 struts2 组件的日志。
3。屏蔽 S2SH 框架中的 hibernate 组件的日志。
配置如下:
- ## Disable other log
- log4j.logger.org.springframework=OFF
- log4j.logger.com.opensymphony.xwork2=OFF
- log4j.logger.org.hibernate=OFF
启动程序,发现仍然有 struts2 组件 com.opensymphony.xwork2 包下的日志输出。
尝试多次,无果。
查看 struts2 的包结构,加入 org.apache.struts2 后,搞定。
特记录配置如下:
- ## root logger level [ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF]
- log4j.rootLogger=DEBUG,F_DEBUG,F_INFO,F_WARN,F_ERROR
- ## Disable other log
- log4j.logger.org.springframework=OFF
- log4j.logger.org.apache.struts2=OFF
- log4j.logger.com.opensymphony.xwork2=OFF
- log4j.logger.com.ibatis=OFF
- log4j.logger.org.hibernate=OFF
- ## console appender
- log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
- log4j.appender.CONSOLE.Target=System.out
- log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
- log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p][%t] method:%l%n %m%n
- ## DEBUG
- log4j.appender.F_DEBUG=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.F_DEBUG.Threshold=DEBUG
- log4j.appender.F_DEBUG.file=LOGS/debug/debug.log
- log4j.appender.F_DEBUG.DatePattern=‘_’yyyy-MM-dd‘.log’
- log4j.appender.F_DEBUG.Encoding=UTF-8
- log4j.appender.F_DEBUG.layout=org.apache.log4j.PatternLayout
- log4j.appender.F_DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n %m%n
- ## INFO
- log4j.appender.F_INFO=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.F_INFO.Threshold=INFO
- log4j.appender.F_INFO.file=LOGS/info/info.log
- log4j.appender.F_INFO.DatePattern=‘_’yyyy-MM-dd‘.log’
- log4j.appender.F_INFO.Encoding=UTF-8
- log4j.appender.F_INFO.layout=org.apache.log4j.PatternLayout
- log4j.appender.F_INFO.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n %m%n
- ## WARN
- log4j.appender.F_WARN=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.F_WARN.Threshold=WARN
- log4j.appender.F_WARN.file=LOGS/warn/warn.log
- log4j.appender.F_WARN.DatePattern=‘_’yyyy-MM-dd‘.log’
- log4j.appender.F_WARN.Encoding=UTF-8
- log4j.appender.F_WARN.layout=org.apache.log4j.PatternLayout
- log4j.appender.F_WARN.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n %m%n
- ## ERROR
- log4j.appender.F_ERROR=org.apache.log4j.DailyRollingFileAppender
- log4j.appender.F_ERROR.Threshold=ERROR
- log4j.appender.F_ERROR.file=LOGS/error/error.log
- log4j.appender.F_ERROR.DatePattern=‘_’yyyy-MM-dd‘.log’
- log4j.appender.F_ERROR.Encoding=UTF-8
- log4j.appender.F_ERROR.layout=org.apache.log4j.PatternLayout
- log4j.appender.F_ERROR.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n %m%n