未调用java.util.logging.publish
我已经实现了未调用java.util.logging.publish,java,logging,wildfly,Java,Logging,Wildfly,我已经实现了java.util.logging.Handler(LogHandler),我的Wildfly配置非常普通。一切正常,工作正常。现在的想法是,将日志部分拆分为两个文件。我所做的工作如下: <periodic-rotating-file-handler name="PROTOCOL" autoflush="true"> <level name="INFO"/> <formatter>
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>
如果您只是想将您的应用程序日志消息拆分为一个单独的文件,那么减去
LogHandler
,您就应该这样做
如果您想使用自己的日志处理程序,则需要将其作为模块安装。有关详细信息,请参阅CLI模块添加--help
。在部署中无法使用自定义处理程序。它们需要定义为模块
然后,您需要将处理程序作为一个组件添加到日志子系统中
下面是一些用于添加模块和创建自定义处理程序的示例命令
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])
您在哪里定义日志处理程序?上面的
协议
记录器是一个org.jboss.logmanager.handlers.PeriodiceRotatingFileHandler
。没错,这可能是个问题。我对它进行了更深入的研究,但是如果我将它更改为ExtHandler
,它仍然是一样的。我注意到第二个“奇怪”的行为。如果我对它进行调试,它将在其他日志消息的发布方法中保持不变。但是来自传输的日志消息是由另一个线程打印的。如果我不将日志文件拆分为两个文件,为什么它会起作用?publish方法是为每个日志消息调用的,并且没有定义为模块?您是在谈论LogHandler
类中的publish(LogRecord)
方法吗?除非您将它设置为一个模块和一个自定义处理程序,否则我不知道该如何调用它。但我认为您的cli脚本中有一个小错误properties={file=“${jboss.server.log.dir}/protocol.log”}
对我不起作用(Wildfly 9)。但是我现在没有必要,如果你必须深入研究一下的话,节省你的时间
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])