我正在使用Log4j2和Spring Boot(1.2.4)。根据文档(以及spring-boot.jar中的log4j2-file.xml示例),这是我的配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="Logs" fileName="${sys:LOG_FILE}" append="false">
...
<Logger level="warn">
<AppenderRef ref="Logs"/>
</Logger>
在application.properties文件中: logging.file:/var/tmp/logs/mylog.log
结果,生成了2个文件:
我不明白为什么会生成文件 $ {sys:LOG_FILE} 。
有什么想法吗? 非常感谢。
答案 0 :(得分:1)
我使用的是版本1.2.5.RELEASE的Spring Boot(包括初学者父母),我看到了同样的问题。
我的假设是Log4j2在Spring Boot加载配置之前尝试初始化文件,导致一个名为$ {sys:LOG_FILE}或$ {sys(在Windows上)的空文件。
避免这种情况的一种方法是只设置系统属性(-DLOG_FILE = / var / tmp / logs / mylog.log)并从配置中删除logger.file。
答案 1 :(得分:0)
logging.file仅用于仅由spring配置的默认记录器 在这种情况下,必须在执行jar之前将LOG_FILE传递给系统变量-DLOG_FILE = / location / of / log.file
答案 2 :(得分:0)
似乎在加载application.properties之前已加载log4j2.xml并创建了日志文件。解决此问题的一种方法是将log4j2.xml的名称更改为其他名称,例如log4j2-example.xml
进行自动加载,然后将以下行添加到application.properties中:
logging.config=classpath:log4j2-example.xml
这将确保在创建记录器之前已加载LOG_PATH。