Log4j:日志显示在控制台上,但文件未更新

时间:2013-04-29 14:50:00

标签: log4j

这里我在Netbeans中的独立应用程序中使用log4j API.Logs在控制台上打印但不在File.Log4j文件中存在于源文件夹中。请帮助我! 下面是我的log4j.properties文件

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n
log4j.appender.file.File=E:\\Final\\Testing123.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.DatePattern`enter code here`='.'yyyy-MM-dd
log4j.logger.testing=DEBUG, stdout, file
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.Target=System.out

以下是我正在使用它的类。

public class Test {
     protected static  Logger logger = LoggerFactory.getLogger(Testing.class.getName());   

     public static void main(String[] args) {

         logger.debug("Test Log1");
         Test t = new Test();
         logger.debug("Test Log2");
         //t.setLogPropertyFile();
         logger.debug("Test Log3");
         t.testthis();
         logger.debug("Test Log4");
    }

    public void testthis(){
         this.logger.debug("Test Log");
         this.logger.info("Test Log");
         this.logger.warn("Test Log");
         this.logger.error("Test Log");
    }

1 个答案:

答案 0 :(得分:2)

看起来你的问题就在这里:

log4j.appender.file.DatePattern`enter code here`='.'yyyy-MM-dd

可能是复制/粘贴的东西,但它应该是这样的:

log4j.appender.file.DatePattern='.'yyyy-MM-dd

此外,如果您组织配置文件,它会更容易看到发生了什么:

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 %5p %c{1}\:%L - %m%n

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=E:\\Final\\Testing123.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n
log4j.appender.file.DatePattern='.'yyyy-MM-dd

log4j.logger.testing=DEBUG, stdout, file

----编辑----

如果作为独立的Java应用程序运行,则需要在启动时配置log4j框架。您可以在the documentation配置部分找到相关信息。具体来说,由于您尝试使用属性文件,因此需要执行以下操作(直接从文档中借用):

 import com.foo.Bar;

 import org.apache.log4j.Logger;
 import org.apache.log4j.PropertyConfigurator;

 public class MyApp {

   static Logger logger = Logger.getLogger(MyApp.class.getName());

   public static void main(String[] args) {


     // BasicConfigurator replaced with PropertyConfigurator.
     PropertyConfigurator.configure(args[0]);

     logger.info("Entering application.");
     Bar bar = new Bar();
     bar.doIt();
     logger.info("Exiting application.");
   }
 }