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

===============>>#1 票数:7

您可以使根记录器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>

  ask by Guz translate from so

未解决问题?本站智能推荐:

2回复

如何配置Log4J2

我现在花了几个小时试图解决这个问题并完全失败。 我发现新的配置过程不必要地复杂。 我有一个带有web.xml文件的Servlet,其中包含以下内容: 它似乎没有任何影响。 我使用的是Tomcat 7.0.42,我已经删除了catalina.properties文件中对log4j
4回复

Log4j2 - 配置

我正在尝试在我的新项目中采用Log4j2,但是我在catalina.out获取了我的日志,并且第一个始终是: ERROR StatusLogger Unable to locate a logging implementation, using SimpleLogger 。 看来我已根据Log
2回复

按需重新加载log4j2配置

我将log4j2.xml配置文件设置为每30秒检查一次: 是否有可能以编程方式告诉log4j2检查配置中的更改而不是超时? NB我不想以编程方式加载指定配置文件的配置,我只想告诉log4j2检查之前加载的配置文件,就好像monitorInterval已过期一样。 谢谢!
3回复

“状态”在Log4j2配置中意味着什么?

我刚刚完成了log4j2.xml配置文件的调整,发现了一些我不太懂的东西。 那么什么是<Configuration status="SOME_STATUS_HERE"> ? 几乎在这里的所有示例中:来自Apache的http://logging.apache.org/log4
1回复

log4j2配置文件令人困惑

我有一个处理过的log4j2配置文件,不知道其中一半意味着什么,因为它没有遵循他们网站上有关配置文件布局的规定。 有人可以破译配置文件在说什么吗?
2回复

如何在运行时更改log4j2的配置文件?

我想在运行时在log4j2中打开我的调试语句。 根据文档,我们可以执行此操作。 我将log4j.xml文件保留在默认软件包中,然后用它制成jar。 由于无法修改jar,因此我使用Dlog4j.configuration = / path / to / log4j.xml指定了xml文件。
4回复

如何配置log4j2的加法性以尊重父级?

我认为这段代码很好地解释了我正在尝试做的事情 package us.benanderson; public class MyClass { private static final Logger LOG = LogManager.getLogger(MyClass.class);
1回复

如何登录不同的文件? log4j2

我需要将所有信息记录到info.log,所有警告警告.log和所有我的日志到all.log。 我一直在创建一个log4j2.xml配置。 在我的程序中我定义了记录器: 但只有在文件warn.log中我有Warning message ,其他文件创建,但为空。 我做错了什么?
3回复

如何用log4j2只记录一个级别?

我在应用程序中使用log4j2。 我想要的是将要进行调试的所有内容都放入控制台,将要进行“信息”的所有内容都进入myapp.log,仅将“信息”的所有内容都进入“ myapp-audit.log”。 原因是,INFO主要包含成功的数据修改(例如,“用户创建”,“用户更新”,“用户删除
1回复

log4j vs log4j2:登录到其他文件

使用log4j可以登录到调用此方法的其他文件: 其中test是在log4j.properties中定义的附加程序。 如何使用log4j2登录到其他文件? 这是我的配置文件,我将以编程方式选择登录位置: [解决方案]哦,是的,我想念一个记录器: 我可以通过以下方式选