[英]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.