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-config
到 false
。不过,这只会为您的部署配置日志记录。
您还可以将 log4j.xml
配置文件从部署中移除,并使用日志记录子系统来配置日志记录。
【讨论】:
我没有卡在 log4j 上。我如何记录并不重要,我所追求的只是记录的能力。我是 Spring 和 Jboss/Wildfly 的新手。在这种环境中是否有更好/首选的登录方式? IMO 最好使用 JBoss Logging 或 SLF4J 之类的日志外观。 log4j 是一个完整的日志管理器,容器中通常不需要它,因为容器应该控制日志记录。以上是关于Eclipse、Spring、Wildfly log4j 日志记录的主要内容,如果未能解决你的问题,请参考以下文章