【问题标题】:log4j no appender could be found for logger configured in standalone.xmllog4j 找不到在standalone.xml 中配置的记录器的附加程序
【发布时间】:2013-04-13 03:40:59
【问题描述】:

我在独立模式下使用 jboss as 7。我在我的应用程序中使用 spring,当我运行我的应用程序时,我在服务器日志中收到以下错误:

17:40:19,669 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
17:40:19,671 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) log4j:WARN Please initialize the log4j system properly.  

所以我通过添加记录器来配置 jboss,如下所示:

        <logger category="org.springframework.core.env.StandardEnvironment">
            <level name="DEBUG"/>
            <handlers>
                <handler name="CONSOLE"/>
                <handler name="FILE"/>
                <handler name="TESTFILE"/>
            </handlers>
        </logger>  

处理程序CONSOLE定义如下:

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

但即使这样做了,我仍然收到同样的错误,为什么?

解决方案:

缺少的部分是指出应用程序应该使用 jboss 的子系统 logging 作为 (log4j),它位于其目录 modules 中,更准确地说是在 org/apache/log4j 中。这是通过将文件 jboss-deployment-structure.xml 添加到包含以下内容的 WEB-INF 来完成的:

<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.apache.log4j"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

【问题讨论】:

  • 消息似乎被记录了吗?
  • 不,我得到了同样的错误。
  • 所以您看到了错误,但没有记录正确的消息?
  • 是的,我看到了错误,但没有记录消息。
  • Spring 必须尝试配置 log4j。您可能最好排除 log4j 的服务器版本,打包您自己的并使用 log4j 配置。我对 Spring 的工作原理知之甚少,但这是我的最佳猜测。

标签: logging log4j jboss7.x


【解决方案1】:

你必须在你的配置中定义一个 appender:

<appender name="springFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="../logs/spring.log" />
    <param name="datePattern" value="yyyy-MM-dd" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{dd-MM-yyyy kk:mm:ss.SSS} %-5p %c %x - %m%n" />

    </layout>
</appender>

然后从记录器中引用它:

<logger name="org.springframework.beans" additivity="true">
    <level value="info" />
    <appender-ref ref="springFileAppender" />
</logger>

此配置将记录来自 Spring Beans 模块的所有内容,并在文件 ../logs/spring.log 中记录 INFO 阈值

编辑:我明白了,您正在将 log4J 与 JBOSS 一起使用!

那么您应该定义处理程序(如我示例中的附加程序)。

类似的东西:

 <periodic-rotating-file-handler name="FILE">
            <level name="DEBUG"/>
            <formatter>
                <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
            </formatter>
            <file relative-to="jboss.server.log.dir" path="server.log"/>
            <suffix value=".yyyy-MM-dd"/>
            <append value="false"/>
    </periodic-rotating-file-handler>

【讨论】:

  • appender与standalone.xml配置文件中的handler相同。
  • 查看我的编辑。你应该将你的处理程序定义为类似的东西。希望它能解决你的问题。问候
  • 处理程序已经定义,以CONSOLE处理程序为例。
猜你喜欢
  • 2012-09-13
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2018-03-21
相关资源
最近更新 更多