Sping Boot log4j2.xml滚动文件附加器文件始终为空

k5hmc34c  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(173)

我见过类似的问题,但没有一个解决方案对我有效。我的Sping Boot 应用程序log4j 2配置如下:

日志4j2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration
xmlns="http://logging.apache.org/log4j/2.0/config">
    <Properties>
        <Property name="LOG_PATTERN">%d{dd/MM/yyyy HH:mm:ss.SSS} %-5p [%t][%c{1}] %m%n</Property>
        <Property name="APP_LOG_ROOT">D:/dev/logs</Property>
    </Properties>
    <Appenders>
        <!-- Console Appender -->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}" />
        </Console>
        <RollingFile name="MyFileAppender"
            fileName="${APP_LOG_ROOT}/application.log"
            filePattern="${APP_LOG_ROOT}/application-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}" />
            <Policies>
                <SizeBasedTriggeringPolicy size="1000KB" />
            </Policies>
            <DefaultRolloverStrategy max="1" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="FileLogger" additivity="false">
            <Level value="INFO" />
            <AppenderRef ref="MyFileAppender" />
            <AppenderRef ref="STDOUT" />
        </Logger>
        <Root level="INFO">
            <AppenderRef ref="STDOUT" />
        </Root>
    </Loggers>
</Configuration>

应用程序.yaml:

logging:
  config: src/main/resources/log4j2.xml

日志正在写入控制台,并且在D:/dev/log目录下创建了application.log文件,但该文件始终为空。我找不到任何解决此问题的方法,有什么建议吗?

  • 谢谢-谢谢
cbeh67ev

cbeh67ev1#

我终于找到解决办法了。
首先,我曾经在我的java类中创建Logger示例,如下所示:

private static final Logger LOGGER = LoggerFactory.getLogger(TestController.class);

但我在配置文件中将文件记录器命名为FileLogger

<Logger name="FileLogger" additivity="false">
        <Level value="INFO" />
        <AppenderRef ref="MyFileAppender" />
        <AppenderRef ref="STDOUT" />
</Logger>

所以,要么我不得不在我的java类中做以下事情:

private static final Logger LOGGER = LoggerFactory.getLogger("FileLogger");

或者,另一种方法(我更喜欢)是添加文件附加器到根日志记录器。下面是我的配置文件的最终版本:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration
    xmlns="http://logging.apache.org/log4j/2.0/config">
    <Properties>
        <Property name="LOG_PATTERN">%d{dd/MM/yyyy HH:mm:ss.SSS} %-5p [%t][%c{1}]    
        %m%n
    </Property>
    <Property name="APP_LOG_ROOT">D:/dev/logs</Property>
</Properties>
<Appenders>
    <!-- Console Appender -->
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="${LOG_PATTERN}" />
    </Console>
    <RollingFile name="MyFileAppender"
        fileName="${APP_LOG_ROOT}/application.log"
        filePattern="${APP_LOG_ROOT}/application-%d{yyyy-MM-dd}-%i.log">
        <PatternLayout pattern="${LOG_PATTERN}" />
        <Policies>
            <SizeBasedTriggeringPolicy size="50 MB" />
        </Policies>
        <DefaultRolloverStrategy max="100" />
    </RollingFile>
</Appenders>
<Loggers>
    <Root level="INFO">
        <AppenderRef ref="STDOUT" />
        <AppenderRef ref="MyFileAppender" />
    </Root>
</Loggers>
</Configuration>

相关问题