java.util.logging.publish 没有被调用

java.util.logging.publish does not get called

我已经实现了 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();
   }
}

如果您只是想将您的应用程序日志消息拆分到一个单独的文件中,减去您的 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])