【发布时间】:2012-05-07 06:38:54
【问题描述】:
有很多示例如何将程序输出重定向到文件。
我需要设置文件的最大大小并滚动文件(消失旧消息)或备份旧文件并开始记录到新文件。
有没有办法使用操作系统核心的东西来做到这一点?
我的客户对我每个应用程序创建日志文件并在那里记录所有标准输出感到困惑。
该应用程序是长时间运行的应用程序,包含多个模块,这些模块在不同的 JVM 中启动(换句话说,这些是多个应用程序)并使用相同的 log4j.properties 文件。
我正在使用 java 和 log4j,但 log4j 日志每个包不是每个应用程序。而且它不适合我,因为两个模块可以具有相同的包(记录器类别)但应该被定向到不同的文件。
应用程序模块使用 .sh 脚本启动。
谢谢
【问题讨论】:
-
如果您可以登录到运行 SYSLOG 的服务器,您可以使用 log4j org.apache.log4j.net.SyslogAppender 将所有日志消息从所有进程发送到 SYSLOG。 (这是我们应用程序的标准)。在 syslog-ng.conf 文件中,您可以配置 syslog 以将所有这些消息发送到单个文件。如果这对你有用,我可以提供更多细节。