Как отключить log4j в стороннем jar? - PullRequest
15 голосов
/ 29 апреля 2010

Я экспериментирую с написанием приложения java SE swing, используя сварку JBoss. Weld настраивает ведение журнала с помощью log4j, используя следующий файл log4j.xml в 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 следующим образом:

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

Независимо от того, что я пытаюсь сделать, я не могу предотвратить отображение сообщений log4j от Weld в консоли. Все, что я хочу сделать, это полностью отключить ведение журнала. Но как?

Ответы [ 3 ]

13 голосов
/ 12 декабря 2013

Вскоре после публикации этого вопроса я нашел ответ. Создайте файл 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>
2 голосов
/ 16 июня 2016

Я думаю, что конфигурация журнала по умолчанию для jar-ов третьей части не будет печатать ни одно сообщение в STDOUT или FILE.

Но если вы хотите переопределить конфигурацию журнала по умолчанию без документа, лучшим решением будет декомпилировать файлы JAR и выяснить, как она загружает конфигурацию.

1 голос
/ 20 сентября 2010

Если присутствует файл конфигурации log4j в формате xml, он имеет приоритет над файлами свойств. Это поведение, определяемое log4j. Таким образом, вы можете поместить свою конфигурацию в log4j.xml, и она должна вступить в силу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...