Spring mvc log4j2根级别不工作

Spring mvc log4j2根级别不工作,spring-mvc,log4j2,Spring Mvc,Log4j2,我不熟悉log4j2,现在我已经初始化了log4j2并开始工作,但是我无法设置根记录器级别 我的项目是一个Java Web项目(我在windows7 x64上使用MyEclipse),我在Tomcat7.0.52中运行它 我在课堂上使用这个: log.trace("Here is some TRACE"); log.debug("Here is some DEBUG"); log.info("Here is some INFO"); log.warn("Here

我不熟悉log4j2,现在我已经初始化了log4j2并开始工作,但是我无法设置根记录器级别

我的项目是一个Java Web项目(我在windows7 x64上使用MyEclipse),我在Tomcat7.0.52中运行它

我在课堂上使用这个:

    log.trace("Here is some TRACE");
    log.debug("Here is some DEBUG");
    log.info("Here is some INFO");
    log.warn("Here is some WARN");
    log.error("Here is some ERROR");
    log.fatal("Here is some FATAL");
只得到了错误和致命消息,根据文档,我认为这是log4j2的默认设置。这意味着我自己的配置无效

我的log4j2.xml为:

<?xml version="1.0" encoding="UTF-8"?>  
<configuration status="OFF">  
  <appenders>  
    <Console name="Console" target="SYSTEM_OUT">  
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>  
    </Console>
    <File name="File" fileName="logs/example.log">
         <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </File>  
  </appenders>  
  <loggers>  

    <root level="debug">  
      <appender-ref ref="Console"/>  
      <appender-ref ref="File"/>  
    </root>  
  </loggers>  
</configuration>
根据部署日志,我认为log4j2确实找到了配置文件:

INFO: Initializing log4j from [classpath:/path/to/a/package/log4j2.xml]
INFO 24, 2014 3:37:34  org.apache.catalina.core.ApplicationContext log
INFO: Log4jServletContextListener ensuring that Log4j starts up properly.
INFO 24, 2014 3:37:34  org.apache.catalina.core.ApplicationContext log
INFO: Log4jServletFilter initialized.
你能帮我找出问题所在吗

感谢@Remko提到
log4j.configurationFile
,我用谷歌搜索了一下
系统属性

以前,我确实在log4j2中读过关于自动化配置会话的内容,但我不太了解
系统属性
,所以我忽略了它

我仍然不确定
系统属性之间的关系,所以我尝试了以下方法:

<context-param>
  <param-name>log4j.configurationFile</param-name>
  <param-value>classpath:/path/to/a/package/log4j2.xml</param-value>
</context-param>  

log4j.configurationFile
classpath:/path/to/a/package/log4j2.xml
那不行

其次,我尝试将
-Dlog4j.configurationFile=“CLASSPATH:/path/to/a/package/log4j2.xml”
添加到tomcat的启动选项中,这应该是可行的,但仍然不行

我发现我的问题和它一样

也许configurationFile不支持
类路径
表示法,所以我尝试使用绝对路径
-Dlog4j.configurationFile=“F:\MySpace\myproject\src\foo\blablabla\resource\log4j2.xml”


但是,它仍然不起作用。

尝试将log4j2.xml放在war文件的WEB-INF/classes/下。在这种情况下,不需要在web.xml中配置位置


更新: web.xml(
log4jconfig
)中指定的属性名称是针对Log4J-1.2的,而不是针对Log4J2的


Log4J2的正确属性名是
log4j.configurationFile
。(尽管名称不同,它不仅接受文件,还理解
类路径:
scheme。)

我知道如果我把
log4j2.xml
放在
WEB-INF/classes/
src
中就可以了。但奇怪的是,日志显示它确实从我配置的地方读取了配置,但没有任何效果。嗯。。。它可能会说它正在尝试从
classpath:/path/to/a/package/log4j2.xml
初始化。如果在那个位置找不到任何东西,它应该报告一个明显的错误。顺便说一句,我过去也遇到过类似的问题:如果删除初始斜杠并使用
classpath:path/to/a/package/log4j2.xml
,会怎么样?我认为这与初始斜杠无关,我还有其他条目与初始斜杠有关,它们工作正常。虽然我尝试通过删除初始斜杠来向您提供建议,但它不起作用。
classpath:path
表示法支持位置,但必须是小写。提示:您可以通过将配置更改为以
开头来检查Log4J2是否找到Log4J2.xml配置文件。一旦log4j2找到log4j2.xml文件,就会将log4j2内部日志打印到控制台(示例中的Tomcat控制台)。Tip2:通过设置系统属性
-Dlog4j2.StatusLogger.level=TRACE
启用内部log4j状态记录器。这将把log4j2初始化的详细信息打印到控制台。它可能会提示出哪里出了问题。。。
<context-param>
  <param-name>log4j.configurationFile</param-name>
  <param-value>classpath:/path/to/a/package/log4j2.xml</param-value>
</context-param>