Spring Boot - Log4j2 - 生成2个文件

时间:2015-06-26 15:06:33

标签: spring-boot log4j2

我正在使用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} 的文件仍为空
  • 正确填写一个文件/var/tmp/logs/mylog.log

我不明白为什么会生成文件 $ {sys:LOG_FILE}

有什么想法吗? 非常感谢。

3 个答案:

答案 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。