首页 > 解决方案 > 为什么 Log4j2 不将日志写入文件?

问题描述

这是我的log4j2.xml配置path to file- src/com/tarasiuk/task_01/log/dataLogger.log

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <Properties>
        <Property name="FORMAT_MESSAGE">
            %d{YYYY-MM-dd HH:mm:ss} [%t] Level:%-7p Class:%c{1}:%-5L - %msg%n
        </Property>

        <Property name="LOG_FILE">
            src/com/tarasiuk/task_01/log/dataLogger.log
        </Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${FORMAT_MESSAGE}" />
        </Console>

        <File name="File" fileName="${LOG_FILE}" append="false">
            <PatternLayout pattern="${FORMAT_MESSAGE}" />
        </File>
    </Appenders>

    <Loggers>
        <Logger name="org.apache.logging.log4j.test2" level="debug" additivity="false">
            <AppenderRef ref="File" />
        </Logger>

        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

我的项目结构:
在此处输入图像描述

我所做的:

  1. path将日志文件从更改src/com/tarasiuk/task_01/log/dataLogger.logcom/tarasiuk/task_01/log/dataLogger.log- 没有结果。
  2. 从更改level为-没有结果。<Logger>debuginfo

日志输出到控制台 - 没关系。但是为什么Log4j2不写日志to a file呢?

标签: javalog4j2

解决方案


尝试使用以下附加程序。

可能在您的情况下,它无法从属性中获取路径,所以我只提供了名称。因此,它会自动在与您的应用程序相同的路径上创建文件。

<Appenders>
    <File name="dataLogger" fileName="dataLogger.log" append="false">
       <PatternLayout pattern="%level - %m%n"/>
    </File>
    <Console name="STDOUT" target="SYSTEM_OUT">
      <PatternLayout pattern="%level - %m%n"/>
    </Console>
  </Appenders>

这将对您有所帮助。


推荐阅读