Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何登录不同的文件?log4j2_Java_Logging_Configuration_Log4j_Log4j2 - Fatal编程技术网

Java 如何登录不同的文件?log4j2

Java 如何登录不同的文件?log4j2,java,logging,configuration,log4j,log4j2,Java,Logging,Configuration,Log4j,Log4j2,我需要将所有信息记录到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" fil

我需要将所有信息记录到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>

但只有在warn.log文件中我有
警告消息
,其他文件创建,但为空。我做错了什么?

配置中只能有一个记录器。在该根记录器上,定义多个Appender引用,每个文件Appender对应一个

  • 对于每个Appender Ref,指定级别,以筛选出过于详细的事件:
  • 
    
    这个问题是重复的。请看一看:Vargan,您指定的答案是针对log4j1.x的。这个问题是针对log4j2的。哦,你能举个简单的例子吗?
    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");
    }