在Wildfly 8.2中配置日志的正确方法

Vij*_*van 10 java logging jboss wildfly wildfly-8

我在设置Wildfly-8.2.0中的日志时感到困惑.最初我使用了自己的日志记录系统,在WAR文件中内置了log4j.xml,一切都运行得很好.但是,当我对日志配置进行任何更改时,我需要重新部署应用程序以使更改生效.所以,我切换到了JBoss记录器子系统.下面是配置我做的standalone.xmljboss-cli

/subsystem=logging/custom-handler=myplatform:add(class=org.apache.log4j.RollingFileAppender, module=org.jboss.log4j.logmanager, formatter="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n", properties={MaxFileSize=1024000,maxBackupIndex=20,file="${jboss.server.log.dir}/myplatform-debug.log"})
Run Code Online (Sandbox Code Playgroud)

所以它添加了以下配置 standalone.xml

            <custom-handler name="example" class="org.apache.log4j.RollingFileAppender" module="org.jboss.log4j.logmanager">
                <formatter>
                    <pattern-formatter pattern="%d{.yyyy-MM-dd} %-5p [%c] (%t) %s%E%n"/>
                </formatter>
                <properties>
                    <property name="MaxFileSize" value="1024000"/>
                    <property name="maxBackupIndex" value="20"/>
                    <property name="file" value="${jboss.server.log.dir}/ott-platform-log.log"/>
                </properties>
            </custom-handler>
Run Code Online (Sandbox Code Playgroud)

然后是记录器

<logger category="com.mycompany.project.module1">
  <level name="DEBUG"/>
    <handlers>
      <handler name="myplatform"/>
    </handlers>
</logger>
Run Code Online (Sandbox Code Playgroud)

一切正常,但我的所有应用程序日志也都记录在服务器日志中.而且,在控制台日志中也是如此.我不希望这种情况发生,毕竟我已经为我的项目单独配置了记录器!如何停止服务器登录我的日志登录到server.log?或者有没有办法使用appender?如果是这样的话?

Man*_*anu 21

从"干净" standalone.xml我做以下事情:

  1. 向控制台添加处理程序:
<profile>
    <subsystem xmlns="urn:jboss:domain:logging:2.0">
        ...
        <console-handler name="CONSOLE_HANDLER">
            <level name="DEBUG"/>
            <formatter>
                <named-formatter name="ECLIPSE_PATTERN"/>
            </formatter>
        </console-handler>
        ...
Run Code Online (Sandbox Code Playgroud)
  1. 如果你想要一个日志文件:
<profile>
    <subsystem xmlns="urn:jboss:domain:logging:2.0">
       ...
       <periodic-rotating-file-handler name="MI_PROJECT_FILE_HANDLER" autoflush="true">
            <formatter>
                <named-formatter name="ECLIPSE_PATTERN"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="myProject.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="true"/>
        </periodic-rotating-file-handler>
       ...
Run Code Online (Sandbox Code Playgroud)
  1. 记录器(与1和2相同)注意到use-parent-handlers
<logger category="com.company.project" use-parent-handlers="false">
    <level name="DEBUG"/>
    <handlers>
        <handler name="MI_PROJECT_FILE_HANDLER"/>
        <handler name="CONSOLE_HANDLER"/>
    </handlers>
</logger>
Run Code Online (Sandbox Code Playgroud)
  1. 我使用了自定义模式(相同级别):
<formatter name="ECLIPSE_PATTERN">
    <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter> 
Run Code Online (Sandbox Code Playgroud)
  1. 确保这一点:
<root-logger>
    <level name="INFO"/>
    <handlers>
        <handler name="CONSOLE"/>
        <handler name="FILE"/>
    </handlers>
</root-logger>
Run Code Online (Sandbox Code Playgroud)

  • 在根据您的方法尝试了各种配置之后,我发现只需要使用属性use-parent-handlers ="false"来禁用登录到server.log. (3认同)
  • 这是正确的所有需要​​的是`use-parent-handlers = false`来做你正在尝试做的事情.我还建议不要手动更新XML,而是使用CLI或Web控制台进行日志记录更改,因为它们可以在运行时完成而无需关闭服务器或无需重新启动服务器. (2认同)