当前位置: 代码迷 >> Web前端 >> web项目中Log4j不输出到文件有关问题
  详细解决方案

web项目中Log4j不输出到文件有关问题

热度:314   发布时间:2013-03-12 11:19:35.0
web项目中Log4j不输出到文件问题
?
?
?
?

?

log4j.properties文件放在classpath文件夹下(即web项目的WEB-INF/classes文件夹下,
?

这样可以保证log4j能够自动识别配置文件,而不用显式的配置)内容如下:

[plain]?view plaincopy
  1. log4j.rootLogger=warn,?stdout,file??
  2. ??
  3. ###?direct?log?messages?to?stdout?###??
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender??
  5. log4j.appender.stdout.Target=System.out??
  6. #log4j.appender.stdout.Target=System.err??
  7. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout??
  8. #log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}?%5p?%c{1}:%L?-?%m%n??
  9. log4j.appender.stdout.layout.ConversionPattern=%5p?[%t]?%c{1}:%L?-?%m%n??
  10. ??
  11. ??
  12. ###?direct?messages?to?file?file.log?###??
  13. #log4j.appender.file=org.apache.log4j.FileAppender??
  14. log4j.appender.file=org.apache.log4j.DailyRollingFileAppender??
  15. log4j.appender.file.DatePattern=yyyyMMdd??
  16. log4j.appender.file.File=../logs.log??
  17. log4j.appender.file.layout=org.apache.log4j.PatternLayout??
  18. log4j.appender.file.layout.ConversionPattern=%d{yyyy/MM/dd?HH:mm:ss}?%5p?%c{1}:%L?-?%m%n??

问题描述:在控制台程序下可以输出到控制台和logs.log文件当中,但是在web项目当中做的log输出只能输出到控制台,而无法输出到logs.log文件当中。

控制台程序如下:

[java]?view plaincopy
  1. public?class?TestLogger?{??
  2. ??
  3. ????public?static?Log?log?=?LogFactory.getLog(TestLogger.class);??
  4. ??
  5. ????public?static?void?main(String[]?args)?{??
  6. ????????log.error("怎么回事?");??
  7. ????}??
  8. ??
  9. ????@Test??
  10. ????public?void?test()?{??
  11. ????????log.error("怎么回事?");??
  12. ????}??
  13. }??

以上程序可以输出到控制台和logs.log文件当中。但是如下程序:

[java]?view plaincopy
  1. public?class?TestLogs?extends?HttpServlet?{??
  2. ????private?static?final?long?serialVersionUID?=?1L;??
  3. ????private?static?Log?log?=?LogFactory.getLog(TestLogs.class);??
  4. ??
  5. ????/**?
  6. ?????*?@see?HttpServlet#HttpServlet()?
  7. ?????*/??
  8. ????public?TestLogs()?{??
  9. ????????//?TODO?Auto-generated?constructor?stub??
  10. ????}??
  11. ??
  12. ????@Override??
  13. ????public?void?init()?throws?ServletException?{??
  14. ????????log.error("怎么回事?");??
  15. ????}??
  16. }??

输出只能输出到控制台,而无法输出到logs.log文件当中。

问题出在
log4j.appender.file.File=../logs.log

这个配置之上。应更改为:

log4j.appender.file.File=d:/logs.log

即要指定绝对路径而不能指定相对路径!问题解决!

配置成相对路径时,在eclipse 工程跟目录下能生成相应的日志文件,但是web服务器启动时不会记录到根目录下的日志文件,因为web服务器找不到。

纠结好久的问题!!。

?

?