忘记第二,为什么在地球上,你会做这样的事情的问题 - 如果,不管出于什么原因,二FileAppenders都配置了相同的文件 - 这会设置工作?
Answer 1:
Log4j的FileAppender不允许两个JVM的写作到同一个文件。 如果你尝试,你会得到一个损坏的日志文件。 然而,的logback,Log4j的继任者,在谨慎的方式允许两个附加目的地,即使在不同的JVM写同一个文件。
Answer 2:
它不直接回答你的问题,但LOG4 *净*的FileAppender具有您可以设置当文件实际上是在使用中只锁定LockingModel属性。 所以,如果你有两个FileAppenders与MinimalLock集合在同一个线程工作时,它可能会完全正常工作。 在不同的线程,你可能会在一段时间打一次陷入僵局。
该FileAppender支持可插拔的文件通过LockingModel属性锁定模式。 默认行为,通过FileAppender.ExclusiveLock实行的是直到这个附加器被关闭的文件,以获得独占写锁。 另外的型号,FileAppender.MinimalLock,仅在附加目的地写日志事件持有写锁。
粗略网络搜索没有露面任何有用的结果有关log4j的实施MinimalLock。
Answer 3:
从Log4j的常见问题A3.3
如何获取多个进程记录到同一个文件?
您可能有每个进程的日志到SocketAppender。 接收的SocketServer(或SimpleSocketServer)可接收全部事件,并将它们发送到一个日志文件。
至于是什么,实际上意味着我将调查自己。
我还发现另一个以下解决方法SO问题 :
代码+实施例
文章来源: Can two log4j fileappenders write to the same file?