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])
我已经实现了 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])