2017-05-04 86 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'取代,正如我在问题中提到的那样,该文件正在创建中 –