Eclipse、Spring、Wildfly log4j 日志记录

Posted

技术标签:

【中文标题】Eclipse、Spring、Wildfly log4j 日志记录【英文标题】:Eclipse, Spring, Wildfly log4j logging 【发布时间】:2014-06-19 18:48:15 【问题描述】:

我在 WildFly 8.0 上运行 Spring 框架 3.2.2.RELEASE。我正在尝试让日志记录工作。我已经尝试阅读几个教程,但是似乎无法将任何输出输出到控制台或日志。我正在查看 Eclipse 中的控制台,以及 wildfly/standalone/log/server.log 中的日志。感谢您提供任何帮助进行日志记录。

这里有一些有趣的代码:

src/main/resources/log4j.xml:

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p: %c - %m%n" />
    </layout>
</appender>

<!-- Application Loggers -->
<logger name="com.myCompany.myPackage">
    <level value="info" />
</logger>
    <!-- 3rdparty Loggers 
         omitted
    -->
<!-- Root Logger -->
<root>
    <priority value="warn" />
    <appender-ref ref="console" />
</root>

wildfly/standalone/configuration/standalone.xml:

        <subsystem xmlns="urn:jboss:domain:logging:2.0">
            <console-handler name="CONSOLE">
                <level name="INFO"/>
                <formatter>
                    <named-formatter name="COLOR-PATTERN"/>
                </formatter>
            </console-handler>
            <periodic-rotating-file-handler name="FILE" autoflush="true">
                <formatter>
                    <named-formatter name="PATTERN"/>
                </formatter>
                <file relative-to="jboss.server.log.dir" path="server.log"/>
                <suffix value=".yyyy-MM-dd"/>
                <append value="true"/>
            </periodic-rotating-file-handler>
            <logger category="com.arjuna">
                <level name="WARN"/>
            </logger>
            <logger category="org.apache.tomcat.util.modeler">
                <level name="WARN"/>
            </logger>
            <logger category="org.jboss.as.config">
                <level name="DEBUG"/>
            </logger>
            <logger category="sun.rmi">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb">
                <level name="WARN"/>
            </logger>
            <logger category="jacorb.config">
                <level name="ERROR"/>
            </logger>
            <root-logger>
                <level name="INFO"/>
                <handlers>
                    <handler name="CONSOLE"/>
                    <handler name="FILE"/>
                </handlers>
            </root-logger>
            <formatter name="PATTERN">
                <pattern-formatter pattern="%dyyyy-MM-dd HH:mm:ss,SSS %-5p [%c
] (%t) %s%E%n"/>
            </formatter>
            <formatter name="COLOR-PATTERN">
                <pattern-formatter pattern="%Klevel%dHH:mm:ss,SSS %-5p [%c]
(%t) %s%E%n"/>
            </formatter>
        </subsystem>

src/com/myCompany/myPackage/mySubpackage/myClass.java

package com.myCompany.myPackage.mySubpackage;

import org.apache.log4j.Logger;

public class myClass

   private static final Logger log = Logger.getLogger(myClass.class.getName());

   public SoccerFeed someMethod()
   
      log.info("******************* someMethod ");
   

解决方案: 根据下面 Jame 的回答,为了根据我上面的设置解决这个问题,我在 wildFly 的standalone.xml 中添加了以下内容,并且日志记录按预期工作:

<subsystem xmlns="urn:jboss:domain:logging:2.0">
    <use-deployment-logging-config value="false"/>

【问题讨论】:

【参考方案1】:

我不确定 Spring 如何配置日志记录,但我认为它对 log4j 做了一些特定的事情。您可能需要禁用 use-deployment-logging-configfalse。不过,这只会为您的部署配置日志记录。

您还可以将 log4j.xml 配置文件从部署中移除,并使用日志记录子系统来配置日志记录。

【讨论】:

我没有卡在 log4j 上。我如何记录并不重要,我所追求的只是记录的能力。我是 Spring 和 Jboss/Wildfly 的新手。在这种环境中是否有更好/首选的登录方式? IMO 最好使用 JBoss Logging 或 SLF4J 之类的日志外观。 log4j 是一个完整的日志管理器,容器中通常不需要它,因为容器应该控制日志记录。

以上是关于Eclipse、Spring、Wildfly log4j 日志记录的主要内容,如果未能解决你的问题,请参考以下文章

Wildfly + Eclipse 部署扫描程序

从 IntelliJ 调试 Eclipse Wildfly

如何配置从 Eclipse 到 Wildfly 的部署

通过 Eclipse 在 Docker 上调试 Wildfly 应用程序?

Eclipse上搭建Spring的开发环境

如何使用 JBoss Tools 插件将 EAR 应用程序从 Eclipse 压缩到 Wildfly?