使用多个记录器时出现错误

时间:2019-01-18 10:45:56

标签: java log4j

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

我正在用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)调用失败

1 个答案:

答案 0 :(得分:0)

您可以检查此行

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