[英]slf4j with log4j2 creates log files but does not write to it
我有一个Spring Boot应用程序,我正在尝试使用SLF4J和Log4J2设置日志记录。
这是应用程序的摘录
package hello;
import java.util.concurrent.atomic.AtomicLong;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetingController implements IGreetingService {
// private Logger logger = LogManager.getLogger(GreetingController.class.getName());
private Logger logger = LoggerFactory.getLogger(GreetingController.class.getName());
private static final String template = "Hello, %s!";
private final AtomicLong counter = new AtomicLong();
@Override
public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
logger.error("greeting called");
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
这是log4j2.component.properties文件的内容,我在其中定义了log4j配置文件:log4j.configurationFile = c:\\ log4j2.xml
这是log4j2.xml文件:
<Configuration>
<properties>
<property name="path">logs</property>
</properties>
<Appenders>
<Console name="consoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss} %msg"/>
</Console>
<File name="myfileAppender" fileName="${path}/file.log" immediateFlush="true" append="true">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
<RollingFile name="rollingAppender"
fileName="c:\\roll.log"
filePattern="c:\\roll.log\\$${date:yyyy-MM}\\app-%d{MM-dd-yyyy}-%i.log">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
<SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="hello" level="error">
<AppenderRef ref="consoleAppender"/>
<AppenderRef ref="myfileAppender"/>
</Logger>
<Root level="error">
<AppenderRef ref="consoleAppender"/>
<AppenderRef ref="myfileAppender"/>
<AppenderRef ref="rollingAppender"/>
</Root>
我为控制台设置了三个附加程序,一个文件和一个滚动文件。 当我运行应用程序时,我会在控制台中看到日志,但是日志的格式没有我在配置中定义的格式。
2016-09-13 12:41:09.569 ERROR 9892 --- [nio-8888-exec-6] h.GreetingController : greeting called
创建了file.log和roll.log,但是它们中没有任何日志信息。
这是build.gradle的片段
configurations {
compile.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
compile.exclude group: 'commons-logging'
}
dependencies {
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web')
compile(group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2')
compile(group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka-server')
compile group: 'com.netflix.eureka', name: 'eureka-client', version: '1.4.10'
compile group: 'com.sun.jersey', name: 'jersey-server', version: '1.19.1'
compile group: 'com.sun.jersey', name: 'jersey-core', version: '1.19.1'
compile group: 'com.sun.jersey', name: 'jersey-servlet', version: '1.19.1'
}
春季启动版本:1.3.6
任何帮助弄清楚我在做什么错的帮助将不胜感激。 提前致谢。
所示的配置文件没有</Loggers
和</Configuration >
标记。 这可能会阻止XML的解析,并且log4j将安装默认配置,该配置仅以错误级别记录到控制台。
如果找不到或未正确处理配置文件,则仍可以通过设置系统属性-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
来启用log4j2内部状态日志记录。 这可以让您深入了解问题所在。
我想出了如何使其工作。 我需要将log4j2.xml文件添加到项目和文件系统中的src / main / resources中,在我的情况下为c:\\ log4j2.xml
如果缺少其中一个文件,则日志记录将不起作用。 谢谢大家的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.