首页 > 解决方案 > 使用多个记录器时出错

问题描述

我正在使用多个记录器附加到多个日志文件中。这些日志文件的路径是动态设置的。

我正在用 java 做我的项目并使用 log4j 框架。我的项目结构。

  src 
 log4test
 log4test.java
 log4test2
 log4test2.java
 log4j.properties



 log4test.java:-
 public class Log4Test{


 public static void main(String[] args)throws IOException,SQLException{
   System.setProperty("logs", "C:\\New folder 3\\logs.log");
   Logger log = Logger.getLogger("file");
   log.info("hello");
  Log4Test2.fefe();
  }

  }
 log4test2.java:-
  public class Log4Test2{
       /* Get actual class name to be printed on */
       public static void fefe()throws IOException,SQLException{
     System.setProperty("logs.file", "C:\\New folder 2\\logs.log");
          Logger log = Logger.getLogger("admin");
          log.info("Debug2");
          log.info("Info2");
       } 
     }
   log4j.properties:-
   log4j.rootLogger=INFO
   log4j.logger.file=INFO, file
   log4j.logger.admin=INFO, admin

   # Define the file appender
   log4j.appender.file=org.apache.log4j.FileAppender
   log4j.appender.file.File=$[logs}

   # Define the layout for file appender
   log4j.appender.file.layout=org.apache.log4j.PatternLayout
   log4j.appender.file.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} 
   [%p] %m%n

   # Define the file appender
   log4j.appender.admin=org.apache.log4j.FileAppender
   log4j.appender.admin.File=${logs.file}

     # Define the layout for file appender
    log4j.appender.admin.layout=org.apache.log4j.PatternLayout
    log4j.appender.admin.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} 
    [%p] %m%n

我收到此错误:- log4j:ERROR setFile(null,true) 调用失败

标签: javalog4j

解决方案


你能检查一下这条线吗

 # Define the file appender
   log4j.appender.file=org.apache.log4j.FileAppender
   log4j.appender.file.File=$[logs}  //TODO should be ${logs}

如果我没有记错的话。谢谢你。

第二个想法是:

公共类 Log4Test2{

private final Logger logger = LoggerFactory.getLogger("admin");

public void fefe()throws IOException,SQLException{ //try remove static 
    System.setProperty("logs.file", "C:\\New folder 2\\logs.log");
    log.info("Debug2");
    log.info("Info2");
}

推荐阅读