2

我有一个 Java 程序,它在同一台服务器上作为 3 个单独的进程运行。我希望所有进程共享一个日志文件,有没有办法在 logging.properties 文件中指定它?我正在使用 java.util.logging 来处理日志记录。

目前,这就是我在 logging.properties 文件中定义 FileHandler 的方式:

java.util.logging.FileHandler.pattern=%h/log/logfile.log

这适用于程序的 1 个实例,但是,如果我尝试启动程序的 3 个单独实例,结果是:

日志文件.log 日志文件.log.1 日志文件.log.2

对此有何建议?

谢谢

4

4 回答 4

3

Logback 是另一个记录器,但它支持您的情况。

来自文档: http: //logback.qos.ch/manual/appenders.html

查看 FileAppender 的谨慎模式

于 2011-05-17T18:40:18.847 回答
0

详细说明Paul 的回答,您可以使用SocketHandler将日志事件从所有进程定向到单个进程,该进程实际上写入文件。

大多数日志包都提供了此功能的简单实现。另一个广泛支持的选项是与系统的日志记录工具(Window 的事件日志或 syslogd)集成。

于 2011-05-17T18:40:09.950 回答
0

我会编写第二个 Java 程序 - 一个记录器。让其他进程将日志消息发送到日志程序,然后该程序将写入单个日志文件。您可以使用套接字在程序之间进行通信。 这是一个如何做到这一点的例子。

保罗

于 2011-05-17T18:23:31.483 回答
0

不建议从不同的进程(不同的 JVM)写入同一个文件。

唯一安全的方法是以某种方式锁定文件,打开它,写入它然后关闭它。这大大减慢了每次写入的速度,这通常被记录器认为是不可接受的。如果你真的想这样做,你总是可以编写自己的处理程序。

于 2011-05-17T18:16:41.507 回答