0

我一直在尝试使用我自己的 log4j.xml 文件进行日志记录,如下所示: https ://docs.jboss.org/author/display/AS71/How+To#HowTo-HowdoIuselog4j.propertiesorlog4j.xmlinsteadofusingtheloggingsubsystemconfiguration%3F

我做了以下事情: - 我在 WEB-INF 中创建了 jboss-deployment-structure.xml 文件(因为我的应用程序是一个 WAR 文件),其中包含相应的内容;- 我将 log4j-1.2.16.jar 放在我的构建路径中;- 在 src/main/resources 中创建 log4j.xml(这是 Spring Roo 在生成项目时放置文件的位置)。

这样,来自我的类​​的日志消息显示正常,但在控制台中的 DEBUG 级别显示冒泡并被 DispatcherServlet 捕获的错误:

12:06:30,668 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-localhost-
127.0.0.1-8080-3) Handler execution resulted in exception - forwarding to resolved
error   view: ModelAndView: reference to view with name 'uncaughtException'; model is
{exception=java.lang.NullPointerException}: java.lang.NullPointerException at
ro.radcom.muzee.bo.impl.JmsServiceImpl.sendMessage(JmsServiceImpl.java:29) [classes:] at
ro.radcom.muzee.web.HomeController.redirectGet(HomeController.java:56) [classes:] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_33] at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_33] ....

在standalone.xml 中,日志记录部分如下所示:

<subsystem xmlns="urn:jboss:domain:logging:1.1">
    <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>
    <logger category="com.arjuna">
        <level name="WARN"/>
    </logger>
    <logger category="org.apache.tomcat.util.modeler">
        <level name="WARN"/>
    </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="DEBUG"/>
        <handlers>
            <handler name="CONSOLE"/>
        </handlers>
    </root-logger>
</subsystem>

此外,虽然我的 log4j.xml 包含以下内容:

<logger name="org.springframework.security">
     <level value="info" />
</logger>

在控制台中有一些 DEBUG 级别的日志,例如:

"12:06:30,659 DEBUG [org.springframework.security.web.access.intercept.FilterSecurityInterceptor]"
  1. 可能是什么原因?
  2. 这两个问题是否以某种方式相关?

    任何帮助,将不胜感激 。

    谢谢你。

** 应用服务器:JBoss AS 7 IDE:Springsource Tools Suite

4

1 回答 1

0

从日志子系统的角度来看,一切似乎都在正常工作。Spring 正在打印DEBUG消息,并且您设置了根记录器来打印它们以及控制台处理程序。

您的示例消息看起来像是使用日志子系统中的格式。我不确定你的log4j.xml配置文件中是否定义了格式,但我猜你的配置文件没有找到或使用。

使用您自己的 log4j 配置的关键是:

  • 确保您排除了服务器 log4j 库(看起来您使用的是jboss-deployment-structure.xml
  • 确保在部署中包含 log4j 库
  • 确保 log4j 配置文件对部署中的 log4j 可见
于 2013-07-29T15:53:42.210 回答