我有 4 个 java/Java EE 应用程序——两个是在 WebSphere 中运行的基于服务器的 j2ee 应用程序。其他两个是独立的 Java 应用程序。我的日志框架是使用 log4j.properties 的 log4j。
问题 1:我可以拥有一个相同的日志文件来记录所有应用程序。即使所有应用程序同时写入,它会导致任何文件写入问题吗?
问题2:如果所有应用程序都可以正常写入,我如何将应用程序名称预先附加到每个日志语句中?
我有 4 个 java/Java EE 应用程序——两个是在 WebSphere 中运行的基于服务器的 j2ee 应用程序。其他两个是独立的 Java 应用程序。我的日志框架是使用 log4j.properties 的 log4j。
问题 1:我可以拥有一个相同的日志文件来记录所有应用程序。即使所有应用程序同时写入,它会导致任何文件写入问题吗?
问题2:如果所有应用程序都可以正常写入,我如何将应用程序名称预先附加到每个日志语句中?
问题一:
我相信默认情况下它不会工作。
如果您使用的是 SLF4J,请考虑切换到 LogBack。在 LogBack 的 File Appender 中,有一个谨慎模式,允许不同 JVM 中的多个 FileAppender 写入同一个日志文件(当然,它们都需要开启谨慎模式)
http://logback.qos.ch/manual/appenders.html#prudent
问题 2:您永远不应该通过手动记录您的应用名称来使日志消息有所不同。
有很多方法可以做。最简单的方法是:由于您有两个不同的应用程序,您可以为它们设置不同的日志记录配置文件。只需在 appender 使用的日志模式中添加相应的应用名称信息即可满足您的需求。