java - 如何创建两个日志文件

标签 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
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 参数中传递应用程序名称。

关于java - 如何创建两个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63883231/

相关文章:

java - 如何检查用户是否在微调器中选择了一个选项

java - android 为 ListView 中的按钮设置可见性

scala:定义模拟对象的策略,使用隐式注入(inject)依赖项

java - 单元测试 ConsoleAppender log4j

java - 尝试在java中反转二进制数

java - 在 App Engine 上添加安全提供程序时出现 AccessControlException

scala - 为什么在Scala Iteratees中需要Empty输入用例?

scala - 如何在 "Scala"中按键减少 [Not In Spark]

Grails Log4J 未登录生产环境

java - Log4j2:没有可用的 log4j-web 模块