如何登录不同的文件?日志4j2

2024-01-10

我需要将所有信息记录到 info.log,将所有警告记录到 warn.log 等,并将所有日志记录到 all.log。我已经创建了 log4j2.xml 配置。

<?xml version="1.0" encoding="UTF-8"?>
    <configuration monitorInterval = "3" status = "info">
        <appenders>
            <File name="ALL_LOG" fileName="logs/all.log">
                <PatternLayout pattern="%d{ISO8601} [%-5p] (%F:%L) - %m%n"/>
            </File>
            <File name="FILE_ERROR" fileName="logs/error.log">
                <PatternLayout pattern="%d{ISO8601} [%-5p] (%F:%L) - %m%n"/>
            </File>
            <File name="FILE_INFO" fileName="logs/info.log">
                <PatternLayout pattern="%d{ISO8601} [%-5p] (%F:%L) - %m%n"/>
            </File>
            <File name="FILE_DEBUG" fileName="logs/debug.log">
                <PatternLayout pattern="%d{ISO8601} [%-5p] (%F:%L) - %m%n"/>
            </File>
            <File name="FILE_WARN" fileName="logs/warn.log">
                <PatternLayout pattern="%d{ISO8601} [%-5p] (%F:%L) - %m%n"/>
            </File>
            <Console name="STDOUT" target="SYSTEM_OUT.log">
                <PatternLayout pattern="%d{ABSOLUTE} [%-5p] (%F:%L) - %m%n"/>
            </Console>
        </appenders>
        <loggers>
            <root>
                <appender-ref ref="ALL_LOG"/>
            </root>
            <root level="error">
                <appender-ref ref="STDOUT"/>
                <appender-ref ref="FILE_ERROR"/>
            </root>
            <root level="info">
                <appender-ref ref="FILE_INFO"/>
            </root>
            <root level="debug">
                <appender-ref ref="FILE_DEBUG"/>
            </root>
            <root level="warn">
                <appender-ref ref="FILE_WARN"/>
            </root>
        </loggers>
    </configuration>

在我的程序中我定义了记录器:

public class Main {

public static Logger LOG = Logger.getLogger(Main.class);

public static void main(String[] args) {
    LOG.debug("Debug message");
    LOG.warn("Warning message");
    LOG.info("Info message");
}

但只有在文件 warn.log 我有Warning message,其他文件创建,但为空。我做错了什么?


您的配置中只能有一个记录器。在该根记录器上,定义多个 Appender-Ref,每个文件追加器一个。

  1. 对于每个 Appender-Ref,指定级别,以过滤掉过于详细的事件:

<Appender-ref ref="InfoFile" level="info" />

  1. 然后,在每个文件附加器上,有一个过滤器,用于拒绝不完全符合所需级别的事件。这会过滤掉过于笼统的事件。看这个问题为例 https://stackoverflow.com/questions/24695133/log4j2-filter-particular-level-in-apender/24697002#24697002.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何登录不同的文件?日志4j2 的相关文章

随机推荐