如何登录不同的文件? log4j2 [英] How to log in different file? log4j2

查看:70
本文介绍了如何登录不同的文件? log4j2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to log all info to info.log, all warn to warn.log etc and all my logs to all.log. I've been create a log4j2.xml configuration.

<?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>

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

In my programm i define logger:

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,其他文件创建了,但是为空.我做错了什么?

But only in file warn.log i have Warning message, other files create, but empty. What i doing wrong?

推荐答案

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

You can only have one logger in the configuration. On that root logger, define multiple Appender-Refs, one for each File appender.

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

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

  1. 然后,在每个File Appender上,都有一个过滤器,该过滤器拒绝不完全符合所需级别的事件.这样可以过滤出过于笼统的事件.有关示例,请参见此问题.

这篇关于如何登录不同的文件? log4j2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆