【问题标题】:Different applications writing to same log4j log file不同的应用程序写入同一个 log4j 日志文件
【发布时间】:2012-12-30 10:11:00
【问题描述】:

我有 4 个 java/Java EE 应用程序- 两个是在 WebSphere 中运行的基于服务器的 j2ee 应用程序。 其他两个是独立的 Java 应用程序。 我的日志框架是使用 log4j.properties 的 log4j。

问题 1:我可以使用相同的日志文件来记录所有应用程序吗?即使所有应用程序同时写入,是否会导致任何文件写入问题?

问题2:如果所有应用程序都可以正常写入,我如何在每个日志语句中预先附加应用程序名称?

【问题讨论】:

  • 您有这样做的理由吗?也许您可以记录到单独的日志文件,然后使用某种形式的日志文件分析工具来查看记录的数据。我不确定是否有工具可以合并来自多个日志文件的数据,但值得一看。
  • 实际上要求是跨应用程序有一个日志文件
  • 使用某种日志聚合软件...你这个要求没有太大意义...

标签: java jakarta-ee logging log4j


【解决方案1】:

问题一:

我相信默认情况下它不会起作用。

如果您使用的是 SLF4J,请考虑切换到 LogBack。在LogBack的File Appender中,有一种谨慎模式,允许不同JVM中的多个FileAppender写入同一个日志文件(当然,都需要开启谨慎模式)

http://logback.qos.ch/manual/appenders.html#prudent

问题 2: 您永远不应该通过手动记录您的应用名称来使日志消息有所不同。

有很多方法可以做。最简单的方法是:由于您有两个不同的应用程序,您可以为它们设置不同的日志记录配置文件。只需在 appender 使用的日志模式中添加相应的应用名称信息即可满足您的需求。

【讨论】:

  • 所以我可以假设我最终会得到一个损坏的文件吗?
  • 我认为您没有回复我的回答,对吧?我建议的方法不会导致文件损坏。如果您在另一个答案下指的是 cmets,我想我已经引用了足够的参考资料供您决定。您可能(取决于 JVM impl)文件已损坏,并且文件滚动很可能也无法正常工作。
猜你喜欢
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多