Log4j配置到JBoss AS7不显示Spring事务和其他日志(Log4J configurat

2019-09-16 20:56发布

以下是我的log4j.properties:

log4j.rootLogger=ALL, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %p [%c] - %m%n


log4j.logger.org.springframework=ALL
log4j.logger.app.dev.ems=ALL
log4j.logger.org.springframework.transaction=ALL

我刚才提到的log4jConfigLocation在web.xml:

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/resources/log4j.properties</param-value>
</context-param>

而且还定义了监听器类:

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

但我无法看到Spring的事务日志中的控制台。 也从一个类: app.dev.ems.web.wicket.page.home.HomePage当我做:

Logger logger = LoggerFactory.getLogger(getClass());

public HomePage() {     
    logger.debug("<<<<<<<<<<<<<<<<<<<JYM>>>>>>>>>>>>>>>>>>");//if logger.info is used then it is showing.       
}

这也没有显示该日志。 我在检票应用程序,我已经设置:

<init-param>
    <param-name>configuration</param-name>
    <param-value>DEVELOPMENT</param-value>
</init-param>

虽然定义WicketServlet。

我无法找到问题。 任何信息都对我非常有帮助。

注意:如果你要我张贴的applicationContext.xml我能做到这一点。 日交易注解驱动。


我曾经的log4j-1.2.14,SLF4J-API-1.6.1,SLF4J-log4j12-1.4.2增加。 而且我使用JBoss AS-7.1.0-决赛。

在其他SO线程我看到了,这是与JBoss的问题,并按照给定的有指令我在WEB-INF(也试图与META-INF)加入JBoss的部署,structure.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure> 

并确定在applicationContext.xml中的Bean将加载log4j.properties:

<bean id="log4jInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
    <property name="targetMethod" value="initLogging" />
    <property name="arguments">
        <list>
            <value>classpath:/app/dev/ems/web/log4j.properties</value>
        </list>
    </property>
</bean>

但遗憾的是它并没有奏效。

Answer 1:

使用jboss-deployment-structure.xml排除应该是工作。 如果它不是,也可能是您的配置文件的位置。 我不熟悉Spring所以可能添加<context-param/>是指定日志配置的位置的典型方式。

你可能会想尝试你的移动log4j.properties到到WEB-INF/classesMETA-INF存档的目录。 同时你要确保你包括你的部署log4j的库。

FWIW在jboss-deployment-structure.xml将不再需要进行日志记录配置。 这不是在一份新闻稿中还没有,但它是在上游源。

因为它似乎你正在寻找一种方式来打开调试,你需要做两件事情。 您需要设置一个处理程序,以允许调试消息才能通过。 你还需要安装一个记录器,让至少调试如果不是所有的消息才能通过。

例如,在你的情况,你会创建一个记录器,像这样。

<logger category="app.dev.ems.web.wicket" />

这将创造一个记录,将记录在各个层面。 现在创建一个处理程序,或更改先前定义的处理程序,以接受调试消息。

另一个例子是创建您的特定记录文件处理程序,将打印日志消息到文件中。

<file-handler name="myFileHandler>
    <level name="DEBUG"/>
    <file relative-to="jboss.server.log.dir" path="my-log.log"/>
</file-handler>

现在创建您的记录器和处理程序分配给它。

<logger category="app.dev.ems.web.wicket">
    <handlers>
        <handler name="myFileHandler/>
    </handlers>
<logger>

现在,所有日志通过具有的类别的记录器传递的消息app.dev.ems.web.wicket.*将打印到文件中除了附加到根记录器的处理程序。 如果你不希望看到这些默认server.log或控制台上,你可以在添加use-parent-handler="false"属性的记录。



Answer 2:

我得到的问题也使用log4j的使用Spring和JBoss AS7,EAP 6,但我通过排除共享记录从弹簧context.jar修复它并添加其他罐子。 此外,我排除在JBoss的部署,structure.xml模块。 这是不是在所有明显的修复和知道的问题。

下面是我做的:

http://mariemjabloun.blogspot.com/2014/05/resolved-logging-in-jboos-eap-6-spring.html



Answer 3:

我已经找到了解决办法。 我的目标是看到事务日志。 现在我可以看到。 我做了什么,我已经修改了standalone.xml文件驻留在独立/配置。 我更改的日志记录子系统的某些部分:

控制台处理程序:

<console-handler name="CONSOLE">
   <level name="INFO"/>
   <formatter>
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
   </formatter>
 </console-handler>

变成

<console-handler name="CONSOLE">
   <level name="DEBUG"/>
   <formatter>
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
   </formatter>
 </console-handler>

和根记录器

<root-logger>
   <level name="INFO"/>
   <handlers>
      <handler name="CONSOLE"/>
      <handler name="FILE"/>
   </handlers>
</root-logger>

变成

<root-logger>
   <level name="DEBUG"/>
   <handlers>
      <handler name="CONSOLE"/>
      <handler name="FILE"/>
   </handlers>
</root-logger>

这工作。 现在我可以看到调试日志控制台。 :)



文章来源: Log4J configuration not displaying Spring Transaction and other logs in JBoss AS7