Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4J配置未在JBoss AS7中显示Spring事务和其他日志_Java_Logging_Log4j_Jboss7.x_Spring Transactions - Fatal编程技术网

Java Log4J配置未在JBoss AS7中显示Spring事务和其他日志

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.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>
我在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>