Tomcat6.x 不显示详细日志的问题

  • Post author:
  • Post category:其他

以前用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文件,内容为:

Xml代码  
log4j.rootLogger=ERROR,R  

  

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  

log4j.appender.CONSOLE.layout.ConversionPattern=[%p]%t-%c-%m%n

  

log4j.appender.R=org.apache.log4j.RollingFileAppender  

log4j.appender.R.File=${catalina.base}/logs/yazuo_weibo.log

log4j.appender.R.MaxFileSize=10MB  

log4j.appender.R.MaxBackupIndex=10  

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[%p]%t-%c-%m%n

  

log4j.logger.org.apache.catalina=INFO,R,CONSOLE

    去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-adapters.jar


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
       |———webapps

                        |—–xxx\WEB-INF

                                        |—classes

                                                   |—-log4j.properties

######################################################################

最后把log4j.properties里的配置写好就可以了。
如:

######################################################################
log4j.rootLogger = DEBUG, Console, LogFile, ErrorFile

# 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 组件的日志。 




配置如下: 

Java代码  
收藏代码
  1. ## Disable other log  
  2. log4j.logger.org.springframework=OFF  
  3. log4j.logger.com.opensymphony.xwork2=OFF  
  4. log4j.logger.org.hibernate=OFF  





启动程序,发现仍然有 struts2 组件 com.opensymphony.xwork2 包下的日志输出。 


尝试多次,无果。 


查看 struts2 的包结构,加入 org.apache.struts2 后,搞定。 


特记录配置如下: 

Java代码  
收藏代码
  1. ## root logger level [ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF]  
  2. log4j.rootLogger=DEBUG,F_DEBUG,F_INFO,F_WARN,F_ERROR  
  3. ## Disable other log  
  4. log4j.logger.org.springframework=OFF  
  5. log4j.logger.org.apache.struts2=OFF  
  6. log4j.logger.com.opensymphony.xwork2=OFF  
  7. log4j.logger.com.ibatis=OFF  
  8. log4j.logger.org.hibernate=OFF  
  9.   
  10. ## console appender  
  11. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  
  12. log4j.appender.CONSOLE.Target=System.out  
  13. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout  
  14. log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%-5p][%t] method:%l%n    %m%n  
  15.   
  16. ## DEBUG  
  17. log4j.appender.F_DEBUG=org.apache.log4j.DailyRollingFileAppender  
  18. log4j.appender.F_DEBUG.Threshold=DEBUG  
  19. log4j.appender.F_DEBUG.file=LOGS/debug/debug.log  
  20. log4j.appender.F_DEBUG.DatePattern=‘_’yyyy-MM-dd‘.log’  
  21. log4j.appender.F_DEBUG.Encoding=UTF-8  
  22. log4j.appender.F_DEBUG.layout=org.apache.log4j.PatternLayout  
  23. log4j.appender.F_DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n    %m%n   
  24.   
  25. ## INFO  
  26. log4j.appender.F_INFO=org.apache.log4j.DailyRollingFileAppender  
  27. log4j.appender.F_INFO.Threshold=INFO  
  28. log4j.appender.F_INFO.file=LOGS/info/info.log  
  29. log4j.appender.F_INFO.DatePattern=‘_’yyyy-MM-dd‘.log’  
  30. log4j.appender.F_INFO.Encoding=UTF-8  
  31. log4j.appender.F_INFO.layout=org.apache.log4j.PatternLayout  
  32. log4j.appender.F_INFO.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n    %m%n   
  33.   
  34. ## WARN  
  35. log4j.appender.F_WARN=org.apache.log4j.DailyRollingFileAppender  
  36. log4j.appender.F_WARN.Threshold=WARN  
  37. log4j.appender.F_WARN.file=LOGS/warn/warn.log  
  38. log4j.appender.F_WARN.DatePattern=‘_’yyyy-MM-dd‘.log’  
  39. log4j.appender.F_WARN.Encoding=UTF-8  
  40. log4j.appender.F_WARN.layout=org.apache.log4j.PatternLayout  
  41. log4j.appender.F_WARN.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n    %m%n   
  42.   
  43. ## ERROR  
  44. log4j.appender.F_ERROR=org.apache.log4j.DailyRollingFileAppender  
  45. log4j.appender.F_ERROR.Threshold=ERROR  
  46. log4j.appender.F_ERROR.file=LOGS/error/error.log  
  47. log4j.appender.F_ERROR.DatePattern=‘_’yyyy-MM-dd‘.log’  
  48. log4j.appender.F_ERROR.Encoding=UTF-8  
  49. log4j.appender.F_ERROR.layout=org.apache.log4j.PatternLayout  
  50. log4j.appender.F_ERROR.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} [%-5p][%t] method\:%l%n    %m%n