我正在运行 JBoss 4.0.5.GA 并且——我假设——它包含在 OS X Mountain Lion 上的 log4j 包。我已配置../server/site/conf/log4j.xml
为在单独的文件中捕获启动/关闭消息:
<appender name="SERVER_EVENTS" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server_events.log"/>
<param name="Append" value="false"/>
<param name="ImmediateFlush" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<category name="org.jboss.system.server.Server">
<priority value="INFO" />
<appender-ref ref="SERVER_EVENTS"/>
</category>
这适用于捕获启动/关闭线。我正在使用 LaunchAgent 来监视该server_events.log
文件的更改。我已验证 LaunchAgent 已加载并且可以正常工作。
LaunchAgent 在以下时间响应:
- 当
run.sh
开始并且server_events.log
文件被截断时。 - 在服务器关闭时,当一组日志条目以“关闭完成”结尾时。
我遇到的问题是捕获“开始于...”消息。经过多次谷歌搜索,我知道问题出在哪里,我不确定是否存在解决方案。我相信消息没有被捕获,因为 JBoss 在运行时对文件有“保留”。您可以在上面看到我明确要求 JBoss "ImmediateFlush" 消息的位置。我的印象是这是默认设置,但我可以在 Finder 中看到该文件为 0 字节,但查看在 Sublime Text 2 中打开的文件会显示启动消息。
有什么方法可以确保启动消息在发送后立即写入磁盘?还是因为我运行的是这么旧版本的 JBoss,所以我运气不好?