Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未调用java.util.logging.publish_Java_Logging_Wildfly - Fatal编程技术网

未调用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])