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

标签 log4j

这里我在 Netbeans 的独立应用程序中使用 log4j API。日志打印在控制台上,但不在文件中。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");
    }

最佳答案

看来您的问题在这里:

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.");
   }
 }

关于Log4j:日志显示在控制台上,但文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281695/

相关文章:

jsp - 使用 log4j 的 Tomcat 日志记录?

java - 过滤 Apache Spark Log4J 消息以仅保留包含特定字符串的消息

java - Log4j 是一个死项目吗?

java - Apache Tika 停止日志记录

log4j - 如何在 WebSphere 7 中设置 log4j.configuration 系统变量?

java - 使用 log4j 进行 Spring Boot 日志记录 - 如何启用 Spring Boot 日志条目?

java - Web 服务日志记录不输出,但没有失败

java - 将来自特定包的消息记录到文件中

java - 如何解决log4j中的警告???Continuable parsing error...The content of element type "log4j:configuration"must match

log4j - Log4j SyslogAppender是否支持MDC和NDC