当前位置: 首页 > 面试题库 >

如何在第3方jar中禁用log4j?

巩俊远
2023-03-14
问题内容

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

<?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文件来禁用它,如下所示:

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

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


问题答案:

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

这是特定于此线程的示例:

<?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文件,需要在AEM中使用。我不能在AEM中直接使用jar,所以我在链接的帮助下将jar转换为捆绑包。”https://helpx.adobe.com/experience-manager/kb/ConvertAJarIntoOsgiBundle.html“,现在我的bundle已经准备好,并通过felix控制台上传到AEM中。bundle处于活动状态。现在我需要使用bu

  • 问题内容: 我从Eclipse控制台的第3方jar中获取了大量的信息日志消息。打开罐子,我看到它使用了java.util.logging。我想将其jar的输出级别设置为WARNING。 我尝试使用-Djava.util.logging.config.file = pathToMy / JUL.properties的VM参数,其中文件的内容为: 不幸的是,这并没有影响输出。 如果可以轻松完成,则我的

  • 问题内容: 基本上就是这样,我还没有找到一种在我的应用程序中禁用第三方键盘的方法,尽管我知道这可能是因为,因为我已经在1Password等应用程序中看到了它。 有任何想法吗? 问题答案: 将此代码添加到您的 斯威夫特4: 苹果参考。

  • 问题内容: 我正在使用urllib.request.urlretrieve将文件下载到本地。 它引发错误: ssl.CertificateError了未处理由用户代码消息:主机名“foo.net”不匹配的“a248.e.akamai.net”,“要么 _.akamaihd.net”,“ .akamaihd-staging.net”,’ 。 akamaized.net”,“_ .akamaized-

  • 问题内容: 我有一个旧的J2EE应用程序(J2EE 1.3),该应用程序打包到EAR中,并且在EAR中有WAR和EJB JAR。现在,其中一个EJB JAR需要引用一些第三方库JAR,那么打包那些JAR的最佳位置是什么?如何打包? 问题答案: 它们放在耳朵文件的根目录中,或者您可以创建一个 lib 目录来存储它们。任何需要引用它们的项目(EJB或WAR)都必须将它们包括在清单文件的 Class-P

  • 我有一个支持霸气2的要求 我已经使用docket对象创建了swagger 2 如何仅禁用/启用摇摆 3 或摇摆 2?我的意思是如何禁用 swagger 3 配置? 我没有使用启用/禁用swagger 3配置类。只需添加maven依赖项swagger 3就可以了。