2009-08-10 85 views

回答

0

它不直接回答你的问题,但LOG4 *净*的FileAppender具有您可以设置当文件实际上是在使用中只锁定LockingModel属性。所以如果你有两个FileAppender在MinimalLock设置的同一线程中工作,它可能会工作得很好。在不同的线程中,你偶尔会遇到死锁。

FileAppender通过LockingModel属性支持可插入文件锁定模型。由FileAppender.ExclusiveLock实现的默认行为是在文件关闭之前获取文件的独占写入锁定。替代模型FileAppender.MinimalLock仅在appender正在写入日志事件时保存写入锁定。

粗略的网页搜索没有找到关于在log4j中实现MinimalLock的任何有用的结果。

+0

log4net的毫无共同之处与log4j的 – skaffman 2009-08-10 11:24:35

+0

事实并非如此 - 这是大多数概念,而类似的(错误级别,追加程序命名二)。 – ripper234 2009-08-10 17:04:24

3

Log4j的FileAppender不允许两个JVM写入同一个文件。如果你尝试,你会得到一个损坏的日志文件。然而,logback的后继log4j的后继,在prudent mode中允许两个appender甚至在不同的JVM中写入同一个文件。

0

Log4j FAQ a3.3

如何让多个进程记录到同一个文件?

您可能会将每个进程日志记录到SocketAppender。接收的SocketServer(或SimpleSocketServer)可接收全部事件,并将它们发送到一个日志文件。

至于这究竟意味着我会调查自己。

我还发现了以下解决方法上的另一个SO question

Code + Example

相关问题