java.util.logging.publish不会被调用

时间:2015-09-14 14:08:36

标签: java logging wildfly

我已经实现了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不会发布PR​​OTOCOL日志文件中的所有内容。

编辑:

@Singleton
@Startup
public class LogHandler extends ExtHandler {
   @Override
   public void publish(LogRecord record) {
     String message = record.getMessage();
   }
}

1 个答案:

答案 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])