在log4j中配置日志输出格式中带有时间,但是查看日志文件内容却没有显示时间配置文件
log4j.rootLogger = debug ,stdout ,D ,E
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c%L - %m%n
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n测试程序
package com.oliver.log4j;import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;public class TestLog4j { /**
 * @param args
 */
public static void main(String[] args) {
  PropertyConfigurator.configure( "/log4j.properties " );
        Logger logger  =  Logger.getLogger(TestLog4j. class );
        logger.debug( " debug " );
        logger.error( " error " );
}}日志内容
 DEBUG main com.oliver.log4j.TestLog4j -  debug 
 ERROR main com.oliver.log4j.TestLog4j -  error 这里为什么跟配置的格式不符?

解决方案 »

  1.   

    写错了。%d 没有 -
    log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 
      

  2.   

     Logger logger  =  Logger.getLogger(TestLog4j. class );  改成 Logger logger  =  Logger.getLogger(“TestLog4j”); 或许就可以了。但是不知道为什么。
    另外,时间模式中 %-d{yyyy-MM-dd HH:mm:ss, SSS}的SSS指什么
    就是日志中时间后面的数字,谁知道是什么意思? 
      

  3.   

     上面说的可能不对,不好意思。
    我现在出现一个情况, 普通控制台运行可以写log到文件,但是Struts中Action里的Logger却不能写log到文件。为什么呢?另外,时间模式中 %-d{yyyy-MM-dd HH:mm:ss, SSS}的SSS指什么 
    就是日志中时间后面的数字,谁知道是什么意思? 
      

  4.   

    sss 毫秒么?到1000秒数就加1