我有一个Java程序,它在同一台服务器上作为3个独立的进程运行。我希望所有进程共享一个日志文件,有没有办法在logging.properties文件中指定它?我正在使用java.util.logging来处理日志记录。
目前,这是我在logging.properties文件中定义FileHandler的方法:
java.util.logging.FileHandler.pattern =%H /数/ LOGFILE.LOG
这适用于1个程序实例,但是,如果我尝试启动程序的3个单独实例,结果是:
LOGFILE.LOG logfile.log.1 logfile.log.2
对此有何建议?
三江源
答案 0 :(得分:3)
答案 1 :(得分:0)
不建议从不同进程(不同的JVM)写入同一文件。
唯一安全的方法是以某种方式锁定文件,打开文件,写入文件然后关闭文件。这大大减慢了每次写入,这对于记录器来说通常被认为是不可接受的。如果你真的想这样,你总是可以编写自己的处理程序。
答案 2 :(得分:0)
我会编写第二个Java程序 - 记录器。让其他进程将日志消息发送到日志记录程序,然后将其写入单个日志文件。您可以使用套接字在程序之间进行通信。 Here's an example如何做到这一点。
保
答案 3 :(得分:0)
在Paul's answer,上详细说明您可以使用SocketHandler将所有进程的日志事件定向到单个进程,该进程实际写入文件。
大多数日志包都提供了此功能的简单实现。另一个广泛支持的选项是与系统的日志工具集成(Window的事件日志或syslogd)。