Java 如何创建两个日志文件

Java 如何创建两个日志文件,java,scala,log4j,Java,Scala,Log4j,我有以下log4j.properties文件: log.path=/var/log/MyApp log4j.rootLogger=INFO, file log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = MyApp.log log4j.appender.file.Append = true log4j.appender.file.MaxFileSize=10MB log4

我有以下log4j.properties文件:

log.path=/var/log/MyApp


log4j.rootLogger=INFO, file

log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = MyApp.log
log4j.appender.file.Append = true
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=1000
log4j.appender.file.DatePattern = '.'yyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern =%d{yyyy-MM-dd HH:mm:ss} %t/%c{1} [%p] %m%n
当我运行MyApp时,我获得MyApp.log文件。我想知道是否可以在代码中为两个主类设置两个文件?比如:

object MyApp1 {
  def main(args: Array[String]) = {
    log4j.setName("File" -> "MyApp1.log")
    println("HelloWorld")
  }
}
object MyApp2 {
  def main(args: Array[String]) = {
    log4j.setName("File" -> "MyApp2.log")
    println("HelloWorld")
  }
}

然后,当我运行Myapp1时,它将创建Myapp1.log,当我运行Myapp2时,它将创建Myapp2.log

文件名可以在log4j.properties文件中参数化,并作为JVM参数传递

log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File = ${ApplicationName}.log
可以将ApplicationName作为具有实际文件名的JVM参数传递

-DApplicationName=Myapp1

相同的log4j.properties文件可由两个应用程序共享,您可以在JVM参数中为每个应用程序传递应用程序名。

您可以像这样为单个类配置日志文件-

log4j.logger.com.logger.test.logger_test.MyApp1=DEBUG, appender1
log4j.additivity.com.logger.test.logger_test.MyApp1=false
log4j.appender.appender1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.appender1.File=logs/MyApp1.log
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout

log4j.logger.com.logger.test.logger_test.MyApp2=DEBUG, appender2
log4j.additivity.com.logger.test.logger_test.MyApp2=false
log4j.appender.appender2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.appender2.File=logs/MyApp2.log
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
示例:

public class Myapp1 {
        
    Logger logger = Logger.getLogger(Myapp1.class);
        
    public Myapp1() {
        logger.debug("In Myapp1");
    }
}
        
public class Myapp2 {
    Logger logger = Logger.getLogger(Myapp2.class);
        
    public Myapp2() {
        logger.debug("In Myapp2");
    }
}
        
public class App {
    public static void main( String[] args ){
        Myapp1 myapp1 = new Myapp1();
        Myapp2 myapp2 = new Myapp2();
    }
}

这回答了你的问题吗?它创建了两个日志文件,但日志文件中没有任何内容。我无法将日志添加到文件中。您是否相应地更改了包名
com.logger.test.logger\u test
应该是您的包名。我测试了这段代码,它运行正常。