如何在第三方jar中禁用log4j? [英] How to disable log4j in 3rd party jar?

查看:110
本文介绍了如何在第三方jar中禁用log4j?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用JBoss焊接编写java SE swing应用程序。 Weld使用jar中的以下log4j.xml文件使用log4j配置日志记录:

I'm experimenting writing a java SE swing application using JBoss weld. Weld configures logging with log4j using the following log4j.xml file in the jar:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!--

    JBoss, Home of Professional Open Source
    Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual
    contributors by the @authors tag. See the copyright.txt in the
    distribution for a full listing of individual contributors.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <!-- The default pattern: Date Priority [Category] Message\n -->
            <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{2}] %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.StringMatchFilter">
         <param name="AcceptOnMatch" value="false" />
         <param name="StringToMatch" value="Failure while notifying an observer of event [a]" />
        </filter>
    </appender>

    <!-- ############### Weld logging ################### -->

    <category name="org.jboss.weld">
        <priority value="INFO"/>
    </category>

    <root>
        <priority value="INFO"/>
        <appender-ref ref="CONSOLE"/>
    </root>

</log4j:configuration>

我想在我的应用程序中完全禁用日志记录。我尝试禁用它,提供log4j.properties文件,如下所示:

I want to disable logging altogether in my application. I tried to disable it providing a log4j.properties file as follows:

log4j.debug=FALSE
log4j.rootLogger=OFF, CONSOLE

无论我尝试做什么,我都无法阻止来自Weld的log4j消息显示在控制台中。我想做的就是完全禁用日志记录。但是如何?

No matter what I try to do I cannot prevent the log4j messages from Weld to show up in the console. All I want to do is completely disable logging. But How?

推荐答案

发布此问题后不久,我发现了答案。创建 log4j.xml 文件以覆盖第三方JAR中的默认值。

Shortly after posting this question I discovered the answer. Create a log4j.xml file to override the defaults in the 3rd party JAR.

以下是此线程的特定示例:

Here is an example specific to this thread:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>

    <appender name="CA" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%m%n"/>
        </layout>
    </appender>

    <!-- 
        If you want to enable logging for the application
        but wish to disable logging for a specific package
        then use this, where org.jboss is the package
        for which you wish to disable logging.
    -->
    <category name="org.jboss">
        <priority value="off"/>
    </category>

    <root>
        <priority value="off"/> <!--Notice this disables all logging-->
        <appender-ref ref="CA"/>
    </root>

</log4j:configuration>

这篇关于如何在第三方jar中禁用log4j?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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