【发布时间】:2010-11-18 11:31:52
【问题描述】:
我们有一个简单的 Web 应用程序在 Apache 后面的两个 Tomcat 实例上运行(一个使用 mod_proxy_balancer 和 mod_proxy_ajp 的 Tomcat HA 设置)。 webapp 的作用是将传入的请求数据写入日志文件。
鉴于每个tomcat实例都运行在自己的JVM中,我们应该如何实现日志文件的写入?
如果两个实例都可以写入同一个文件,那就太好了,但似乎 Log4J 不支持。我们愿意编写自己的文件编写器,但我不确定 java.nio.channels.FileLock 是否会满足我们的要求。
下面是带有 ext3 文件系统的 Debian,所以如果我们在 C 甚至 PHP 中执行此操作,我们将使用文件系统锁。然而,Java 是为了抽象出底层系统而编写的,并且已经发展成为多个包中的一堆类,所有这些类都声称能够以一种或另一种方式编写文件。有人有建议吗?有没有可以帮助我们的软件包?
首先想要从 2 个 JVM 写入同一个文件只是一个愚蠢的梦想吗?我肯定不是第一个。
另一个要求是每小时滚动一次这些文件,但这不是什么大问题(可能在文件创建时除外)。
谢谢!
【问题讨论】:
标签: java tomcat logging file-io