我一直在尝试在 Spring 项目中通过 log4j2.xml 使日志记录与基本配置一起使用。尝试了两天,没有成功。该项目似乎忽略了我的 log4j2.xml 文件并采用默认配置。
这就是我一直在做的事情:
没有任何帮助。我在 StackOverflow 上查找了一些关于此类问题的帖子,但大多数都提到我们要做的就是将文件添加到类路径中。但就我而言,当我运行应用程序时,只有默认配置才是活动的。准确地说,虽然下面的配置显示“info”,但语句
log.info("Inside foo()");
不会打印消息。当我介入时,我发现信息级别日志未启用。
任何帮助将不胜感激。
==================
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{ISO8601}] [%t] %-5p %c{6} - %msg%n"/>
</Console>
<File name="File" fileName="example.log">
<PatternLayout pattern="[%d{ISO8601}] [%t] %-5p %c{6} - %msg%n"/>
</File>
</appenders>
<loggers>
<logger name="com.mypackage" level="info" additivity="false">
<appender-ref ref="Console"/>
<appender-ref ref="File"/>
</logger>
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
def tomcatVersion = '7.0.42'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
}
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
compile group: 'com.datastax.cassandra', name: 'cassandra-driver-core', version:'1.0.3'
//compile group: 'com.yammer.metrics', name: 'metrics-core', version:'2.2.0'
compile 'org.springframework:spring-core:3.2.3.RELEASE'
compile 'org.springframework:spring-webmvc:3.2.3.RELEASE'
compile 'org.springframework.security:spring-security-web:3.2.0.RELEASE'
compile 'org.springframework.security:spring-security-core:3.2.0.RELEASE'
compile 'org.springframework.security:spring-security-config:3.2.0.RELEASE'
compile 'org.springframework.hateoas:spring-hateoas:0.7.0.RELEASE'
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
runtime 'com.fasterxml.jackson.core:jackson-core:2.2.2'
runtime 'com.fasterxml.jackson.core:jackson-databind:2.2.2'
runtime 'javax.xml.bind:jaxb-api:2.2.9'
compile 'org.apache.logging.log4j:log4j-jcl:2.0-rc1'
runtime 'org.apache.logging.log4j:log4j-jcl:2.0-rc1'
//编译 'org.slf4j:slf4j-api:1.7.5' // 运行时 'org.slf4j:slf4j-jdk14:1.7.5'
testCompile group: 'junit', name: 'junit', version: '4.+'
testCompile 'org.springframework:spring-test:3.2.3.RELEASE'
testCompile "org.mockito:mockito-all:1.9.5"
您需要在类路径中包含 log4j2 api jar 和 log4j2 core jar,以及 log4j2.xml 文件。如果在类路径上找不到核心 jar 或 log4j2.xml,log4j2 将自动配置为仅将错误级别消息打印到控制台的默认配置。
尝试从您的应用程序中打印此内容,以查看类路径上是否存在必要的 jar:
//api
System.out.println(org.apache.logging.log4j.Logger.class.getResource("/org/apache/logging/log4j/Logger.class"));
//core
System.out.println(org.apache.logging.log4j.Logger.class.getResource("/org/apache/logging/log4j/core/Appender.class"));
//config
System.out.println(org.apache.logging.log4j.Logger.class.getResource("/log4j2.xml"));