我正在运行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版本?