【问题标题】:Right way to configure the log in Wildfly 8.2在 Wildfly 8.2 中配置日志的正确方法
【发布时间】:2015-08-09 04:31:15
【问题描述】:

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

/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"})

所以它在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>

然后是一个记录器

<logger category="com.mycompany.project.module1">
  <level name="DEBUG"/>
    <handlers>
      <handler name="myplatform"/>
    </handlers>
</logger>

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

【问题讨论】:

    标签: java logging jboss wildfly wildfly-8


    【解决方案1】:

    从“干净”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>
            ...
    
    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>
           ...
    
    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>
    
    1. 我使用了自定义模式(相同级别):
    <formatter name="ECLIPSE_PATTERN">
        <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
    </formatter> 
    
    1. 请确保这一点:
    <root-logger>
        <level name="INFO"/>
        <handlers>
            <handler name="CONSOLE"/>
            <handler name="FILE"/>
        </handlers>
    </root-logger>
    

    【讨论】:

    • 根据您的方法尝试了各种配置后,我发现属性 use-parent-handlers="false" 是禁用登录到 server.log 所需要的。跨度>
    • 赞成。将该行保持为粗体......但如果有人认为它有帮助,请保留所有其余配置:)
    • 没错,只需要use-parent-handlers=false 即可完成您想做的事情。我还建议不要手动更新 XML,而是使用 CLI 或 Web 控制台进行日志记录更改,因为它们可以在运行时完成,而无需关闭服务器或重新启动服务器。
    • 按照描述简单配置&lt;logger ...&gt;...&lt;/logger&gt; 仍然兼容wildfly 10。太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2015-08-05
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多