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

 
 
 
 

 

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

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

[plain]  view plain copy
  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 plain copy
  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 plain copy
  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服务器找不到。

纠结好久的问题!!。

猜你喜欢

转载自feiyeguohai.iteye.com/blog/1824961
今日推荐