【问题标题】:Can we use akka.event.Logging to write logs in file?我们可以使用 akka.event.Logging 将日志写入文件吗?
【发布时间】:2016-11-11 04:37:26
【问题描述】:

我已经尝试在 scala 中使用 log4j 和 slf4j 和 akka,我能够获取日志文件。我可以在不使用 akka API 以外的任何外部 API 的情况下实现相同的目标吗?通过使用 akka.event.Logging 我可以在控制台中打印日志,但我想在文件中打印它。

我已经尝试在类路径中为我的项目设置 log4j.properties 文件,但当我使用 akka.event.Logging 时它不起作用。

请提出建议。

【问题讨论】:

标签: scala logging akka


【解决方案1】:

据此http://doc.akka.io/docs/akka/current/java/logging.html 你有 3 个选择:

  1. 使用akka.event.Logging$DefaultLogger(用于标准输出,不用于生产)
  2. 使用akka.event.slf4j.Slf4jLogger(akka 为 SLF4J 记录器)
  3. 直接使用 SLF4J API(使用 async appender)

您的情况是 2 或 3(您使用 log4j.properties)。 因此,您应该正确配置文件log4j.properties 以在文件中输出。 还有

  • 在情况2(您想要的情况)中,您应该使用akka.event.Logging,例如:Logging.getLogger(system.eventStream(), "my.string")
  • 在第3种情况下,你应该使用SLF4J API,例如:org.slf4j.LoggerFactory.getLogger(...)

你的情况是 2,如果你在你的 akka 配置中使用这样的东西:

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
  logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}

【讨论】:

  • 这个配置可以吗?我做了你提到的,使用下面的配置,但我仍然无法获取日志文件。 log4j.rootLogger=INFO,文件 log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=[%d][ %p][%c{1}][%t] - %m%n log4j.appender.file.datePattern='.'yyyy-MM-dd log4j.appender.file.file=D:\\scalalogfile.log
  • 我可以通过这个在我的控制台中看到日志,但是没有创建日志文件。
  • 它现在可以工作了,但是我在logback.xml中配置....log4j.properties 不工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多