2013-08-27 124 views
0

我有2个Web应用程序,希望将这两个Web应用程序的日志消息记录到一个日志文件中。我试过这种情况,面临的问题是“如果一个Web应用程序将日志记录到日志中,第二个Web应用程序不能将日志记录到日志文件中”。如果我停止服务器,第二个应用程序能够登录。任何帮助?Log 4j多个Web应用程序的常用日志文件?

+0

可能是文件句柄的争用! –

+0

我不会那样做。让两个程序编写同一个文件风险太大。 –

+0

同意@IgorRodriguez。使用2个单独的文件... –

回答

0

将两个不同应用程序的日志记录放到常见日志中并不是一个好主意。记录模块锁定日志文件以进行写入。如果其他应用程序试图访问相同的日志,它不会得到锁。 我会避免这样的事情。

1

从多个独立进程写入同一个文件是一个坏主意 - 只有其中一个可以获得文件锁定,从您的问题中可以看出。

您需要的是集中式日志记录服务器,并让所有应用程序都通过网络登录到该服务器。请参阅this question

+0

据我所知,只有一个进程可以得到一个_exclusive_锁定 - 还有'O_APPEND'模式(参见[details](http://linux.about.com/od/commands/)升/ blcmdl2_open.htm))。但是这并没有改变,混合日志文件仍然不是一个好主意;-) – Jost

+0

@Jost - 这将大大取决于所使用的日志框架和底层操作系统,即使它可以工作,也会得到交错日志行。无论如何,这将是一个混乱:-) – radai

1

您可以使用Log4J的SocketAppender,因为它更干净 - 可以在本文中找到示例:log4j: How to use SocketAppender

说实话,这是有点矫枉过正相比,有两个独立日志文件为您的过程。

Btw。你的方法在分布式文件系统(例如NFS)上可能有问题 - 不要混合日志文件。

希望有所帮助。 * Jost

相关问题