2017-05-04 112 views
2

我正在使用log4j登錄到控制檯和文件。它只是與控制檯的工作,但不能與文件,認爲該文件被創建log4j不記錄文件

這是我的配置文件:

name=PropertiesConfig 
property.filename = logs 
appenders = console, file 

appender.console.type = Console 
appender.console.name = STDOUT 
appender.console.layout.type = PatternLayout 
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

appender.file.type = File 
appender.file.name = LOGFILE 
appender.file.fileName=${filename}/my_server_logs.log 
appender.file.layout.type=PatternLayout 
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

loggers=file 
logger.file.name=guru.springframework.blog.log4j2properties 
logger.file.level = debug 
logger.file.appenderRefs = file 
logger.file.appenderRef.file.ref = LOGFILE 

rootLogger.level = debug 
rootLogger.appenderRefs = file, stdout 
rootLogger.appenderRef.stdout.ref = STDOUT 

我在想什麼嗎?

回答

2

文件appender和根記錄器之間的連接丟失。 添加下面一行在你的屬性的底部文件:

rootLogger.appenderRef.file.ref = LOGFILE 

預期它將工作。

+0

是的,你是對的!非常感謝 –

+0

不客氣我的朋友:) – VivekRatanSinha

0

我想你會期望變量$ {filename}被替換爲property.filename的值。

您可以嘗試用硬路徑替換$ {filename},然後重試(例如:Windows上的'C:\'或Unix上的'/ tmp /')。

+0

'$ {filename}'確實被'property.filename'取代,正如我在問題中提到的那樣,該文件正在創建中 –