【问题标题】:log4j2 configurationlog4j2 配置
【发布时间】:2013-04-09 04:30:11
【问题描述】:

有人可以告诉我如何更改我的 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>

【问题讨论】:

    标签: java logging configuration log4j log4j2


    【解决方案1】:

    您可以将根记录器设置为 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>
    

    【讨论】:

    • 你更新的 conf 文件对我不起作用,但原来的文件很好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 2014-10-18
    • 2018-05-17
    • 2015-09-24
    • 2013-12-20
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多