gpt4 book ai didi

java - 如何在 3rd 方 jar 中禁用 log4j?

转载 作者:太空狗 更新时间:2023-10-29 22:55:29 24 4
gpt4 key购买 nike

我正在尝试使用 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 文件以覆盖第 3 方 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>

关于java - 如何在 3rd 方 jar 中禁用 log4j?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com