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

标签 java logging jboss wildfly wildfly-8

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

standalone.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 中?或者有没有办法为此使用附加程序?如果是这样怎么办?

最佳答案

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

    关于java - Wildfly 8.2 中配置日志的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476523/

    相关文章:

    java - Java的对象实例如何唯一区分

    php - 您如何监控 Web 服务器上的文件并在数据库 (MySQL) 中记录每次访问(最好是通过 IP 地址)?

    HttpServletRequest 中的 JSP 参数名称

    java - 传递给 org.jboss.resteasy.spi.metadata.ResourceMethod 的错误参数

    java - 在 JOptionPane 中对齐字符串

    Javafx HBox 限制到特定高度

    java - 对于使用记录器框架的 apache-tomcat 与将 STDOUT 重定向到 catalina.out

    azure - Azure 上的 Log4Net

    javascript - key 斗篷 |无法在异步函数中等待 updateToken()

    javascript - 从 Rhino 调用 Java 函数