java – log4j2配置

有人可以说我如何更改我的log4j2.xml以添加1个日志文件:一个级别跟踪和一个级别信息?

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="debug">
    <appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
        </Console>
        <File name="DEBUG_FILE" fileName="debug.txt">
            <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
        </File>
    </appenders>
    <loggers>
        <root level="debug">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
        </root>
    </loggers> 
</configuration>

解决方法:

您可以使根记录器TRACE级别(所有消息)并在控制台上放置ThresholdFilter,以便控制台上只显示一些消息.

此配置仅将ERROR消息记录到控制台,同时将所有消息(TRACE,DEBUG,INFO,ERROR …)记录到debug.txt文件中.在控制台和文件中都会记录错误和更高的消息:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
    <appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
        </Console>
        <File name="DEBUG_FILE" fileName="debug.txt">
            <PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
        </File>
    </appenders>
    <loggers>
        <root level="trace">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="DEBUG_FILE" />
        </root>
    </loggers> 
</configuration>

顺便提一下,请注意您的模式布局包含需要位置信息的转换模式(准确地说,%C,%F和%L).
这意味着对于每条日志消息,log4j2都需要获取堆栈的快照,然后遍历堆栈跟踪以查找执行日志记录的类和方法.

这非常非常慢.

同步日志记录的记录速度将降低2-5倍,异步日志记录的记录速度将降低4-20倍.

如果性能不是问题那么无关紧要,但它绝对值得注意.就个人而言,我只使用%c(记录器名称),我的应用程序的日志消息非常独特,我可以快速找到消息的来源.只需2美分.

—更新2013-04-27 —
我已经学会了一种更简单的方法:你可以在appender-ref上设置一个级别.

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="debug">
    <appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p %c{2} - %m%n" /> <!--without location-->
        </Console>
        <File name="DEBUG_FILE" fileName="debug.txt">
            <PatternLayout pattern="%d %-5p %c{2} - %m%n" />
        </File>
    </appenders>
    <loggers>
        <root level="debug">
            <appender-ref ref="CONSOLE" level="ERROR" />
            <appender-ref ref="DEBUG_FILE" />
        </root>
    </loggers> 
</configuration>
上一篇:java – Log4j 2 SLF4J Binding和Log4j 2到SLF4J Adapter之间有什么区别


下一篇:使用Slf4j集成Log4j2构建项目日志系统的完美解决方案