【问题标题】:Hide log4j logs隐藏 log4j 日志
【发布时间】:2016-02-13 02:58:47
【问题描述】:

我正在使用 log4j 来显示日志...

我正在使用 xml 配置,这是我正在使用的 log4j.xml:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
    <appender name="stderr" class="org.apache.log4j.ConsoleAppender">
        <param name="threshold" value="warn" />
        <param name="target" value="System.err"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
        </layout>
    </appender>
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <param name="threshold" value="debug" />
        <param name="target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d [%t][%F:%L] : %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="debug" />
            <param name="LevelMax" value="info" />
        </filter>
    </appender>
    <root>
        <priority value="ERROR"></priority>
        <appender-ref ref="stderr" />
        <appender-ref ref="stdout" />
    </root>
</log4j:configuration>

当我执行一个主类时,我希望在我的控制台中只显示错误日志。但是 Log4j 仍然显示它的日志:

log4j: Trying to find [log4j.xml] using context classloader sun.misc.Launcher$AppClassLoader@72ea2f77.
log4j: Using URL [file:/Users/***/jpa-model/target/classes/log4j.xml] for automatic log4j configuration.
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator
log4j: System property is :null
log4j: Standard DocumentBuilderFactory search succeded.
log4j: DocumentBuilderFactory is: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
log4j: debug attribute= "false".

我是否有可能隐藏 log4j 日志?

我尝试自己启动记录器并将级别设置为关闭,但 log4j 仍然显示其正确的日志:

private static final Logger log = Logger.getLogger(HibernateTest.class.getName());

public static void main(String[] args) {
    log.setLevel(Level.OFF); 

谢谢

【问题讨论】:

  • 我使用 log4j 已经有一段时间了,但我认为您可以修改过滤器标签以将最小和最大级别设置为错误。
  • 感谢您的回复,我尝试了您所说的,得到了​​相同的结果...您建议使用另一个记录器系统吗?
  • 你指的这个日志不是log4j记录器,而是log4j在初始化时记录到system.out(搜索log4j.xml等)。如果我没记错的话,这是由于在运行程序时传递了 toma debug 参数,是这样吗?
  • 我明白了:P,但这里有一些概念性的东西。您不能使用 log4j 来控制 log4j ITSELF 在自我初始化时所做的日志记录。那是标准输出,因为 log4j 还没有准备好。因此,如果你想控制它,你必须寻找你的系统在 log4j 被初始化之前使用什么来记录日志。 (除非我在这里非常错误......:/)
  • 感谢您的分析...我同意您的看法...我正在尝试做的事情没有意义...很好,我学到了一些东西...非常感谢您

标签: log4j


【解决方案1】:

试试这个,对我有用:

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-6p [%c] %m%n
log4j.appender.console.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.console.filter.1.StringToMatch=Artifact
log4j.appender.console.filter.1.AcceptOnMatch=true
log4j.appender.console.filter.2=org.apache.log4j.varia.DenyAllFilter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2021-12-12
    • 2021-06-04
    • 2014-09-19
    相关资源
    最近更新 更多