Java Log4J配置未在JBoss AS7中显示Spring事务和其他日志
以下是我的log4j.properties:Java Log4J配置未在JBoss AS7中显示Spring事务和其他日志,java,logging,log4j,jboss7.x,spring-transactions,Java,Logging,Log4j,Jboss7.x,Spring Transactions,以下是我的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.ConversionPat
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
<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>
我在web.xml中提到了log4jconfig
:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/resources/log4j.properties</param-value>
</context-param>
这也不会显示该日志。我在Wicket应用程序中,我已设置:
<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-Final 在另一个SO线程中,我发现这是JBoss的问题,根据那里给出的说明,我在WEB-INF中添加了JBoss-deployment-structure.xml(也尝试了META-INF):
并在applicationContext.xml中定义了一个bean,该bean将加载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
<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>
类路径:/app/dev/ems/web/log4j.properties
但不幸的是,它没有起作用。使用
jboss部署结构。xml
排除应该起作用。如果不是,则可能是配置文件的位置。我不熟悉Spring,因此添加
可能是指定日志配置位置的典型方法
您可能希望尝试将log4j.properties
移动到存档的WEB-INF/classes
或META-INF
目录。此外,还要确保在部署中包含log4j库
FWIW日志配置不再需要jboss部署结构.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>
现在,通过类别为app.dev.ems.web.wicket.的记录器传递的所有日志消息,除了附加到根记录器的处理程序之外,都将打印到该文件中。如果您不想在默认的
server.log
或控制台上看到这些,可以将use parent handler=“false”
属性添加到记录器中。我找到了一个解决方案。我的目标是查看事务日志。现在我明白了。在我所做的工作中,我修改了standalone.xml文件驻留在standalone/configuration中。我更改了日志子系统的某些部分:
控制台处理程序:
<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>
这就行了。现在我可以在控制台中看到调试日志了。:) 您是在独立模式下运行还是在域模式下运行?JBoss现在默认为sl4j。您是否在standalone.xml或domain.xml的日志子系统中添加了记录器?@CoolBeans我没有添加任何内容。我刚刚下载了JBoss-AS-7.1.0-Final,并将我的war部署到standalone/deployments文件夹中。我在其他一些SO线程中看到了使用jboss-deployment-structure.xml的方法,所以我遵循了这个方法。我修改了我的问题来描述这些步骤。Spring使用通用日志记录,所以您必须首先禁用它。请阅读@Cole排除常见日志后,我是否需要执行jboss deployment structure.xml之类的步骤?@TapasBose我不熟悉jboss配置,所以您必须自己尝试。无论如何,我的项目在jetty下使用slf4j+logback,通过遵循spring参考指令,我成功地看到了spring日志。啊,你想做的就是打开调试日志?这在您最初的问题中不是很清楚:-)您可以从控制台处理程序中删除该级别。另外,如果要创建特定的记录器,例如
,则不必将根记录器设置为调试级别。谢谢。我主要想看到的是事务日志。然后我找到了简单的log.debug(“某物”);不显示,但显示log.info(“某物”);做现在问题解决了。你能在你的回答中加上这个特别的评论吗?再次感谢:)
<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>