我已经实现了java.util.logging.Handler
(LogHandler),我的Wildfly配置非常普遍。一切都很好,按预期工作。现在的想法是将日志记录部分拆分为两个文件。我所做的是以下内容:
<periodic-rotating-file-handler name="PROTOCOL" autoflush="true">
<level name="INFO"/>
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="protocol.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
...
<logger category="com.test.transport" use-parent-handlers="false">
<level name="INFO"/>
<handlers>
<handler name="PROTOCOL"/>
<handler name="CONSOLE"/>
</handlers>
</logger>
按预期工作,我从com.test.transport
获得了另一个包含日志的文件。
我的问题是,由于我更改了我的wildfly配置,因此我的LogHandler不会发布PROTOCOL日志文件中的所有内容。
编辑:
@Singleton
@Startup
public class LogHandler extends ExtHandler {
@Override
public void publish(LogRecord record) {
String message = record.getMessage();
}
}
答案 0 :(得分:1)
如果您只想将应用程序日志消息拆分为单独的文件,那么减去LogHandler
应该这样做。
如果要使用自己的日志处理程序,则需要将其作为模块安装。有关详细信息,请参阅CLI module add --help
。部署中无法使用自定义处理程序。它们需要被定义为模块。
然后,您需要将处理程序作为custom-handler添加到日志记录子系统。
这是一些添加模块和创建自定义处理程序的示例命令。
module add --name=com.test.transport --resources=/path/to/jar/transport-logging.jar
/subsystem=logging/custom-handler=PROTOCOL:add(class=com.test.transport.LogHandler, module=com.test.transport, level=INFO, named-formatter=PATTERN, properties={file="${jboss.server.log.dir}/protocol.log"})
/subsystem=logging/logger=com.test.transport:add(level=INFO, use-parent-handlers=false, handlers=[CONSOLE, PROTOCOL])