Я использую классы из других Jars, которые используют классы из других Jar, которые используют log4j. Я не могу изменить ни один из этих банок.
Многие из этих классов печатают отладку на консоль при запуске при отладке в IntelliJ.
Я ищу способы остановить это, поскольку это раздражает .
Я попытался создать файл log4j.properties с уровнем журнала «error» и загрузил его в main () моего приложения, а также установил в логгере по умолчанию уровень «error». Я также проверил, и все Jars имеют свойства внутри, но не определяют, какой уровень журнала (они просто говорят, какая версия Jar). Я попытался создать свои собственные файлы свойств для классов, которые будут работать, но они уже распечатали свою отладку перед загрузкой файла.
Вот некоторые из создаваемых отладочных сообщений:
12:54:17.660 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to xxx.properties
12:54:17.665 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is xxx.properties
12:54:17.665 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file xxx.properties at null: no protocol: xxx.properties
12:54:17.668 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path xxx.properties
12:54:17.668 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - Base path set to file:///C:/myProgram/xxx.properties
12:54:17.680 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to yyy.properties
12:54:17.680 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file yyy.properties at null: no protocol: yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path yyy.properties
12:54:17.681 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - Base path set to file:///C:/myProgram/yyy.properties
Вот мои файлы .properties:
--- log4j.properties ---
log4j.rootLogger=error
--- xxx.properties ---
log4j.rootLogger=error
--- yyy.properties ---
log4j.rootLogger=error
мой основной метод запускается так:
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Logger.getRootLogger().setLevel(Level.ERROR);
Файл log4j.properties загружается нормально, без проблем, и доволен "log4j.rootLogger = error". (если я добавлю ', R' или ', stdout', как я видел в других SO-вопросах , он жалуется, но я подозреваю, что это из-за того, что я нахожусь на Windows).
Если это невозможно, дайте мне знать, и я просто приму это, смирись с этим и перестану искать.
Этот проект управляется большой аудиторией, использующей windows, ma c и linux. (проект является тестовым комплектом для разработчиков, которым необходимо запустить коллекцию Jars, которые разрабатывают новые для коллекции)
--- edit ----
Я исследовал предложение поместить log4j. xml в папку моего проекта src / main / resource, но не могу заставить его работать.
Все, что я прочитал, указывает на log4j. xml должно работать, но я работаю из вещей, чтобы попробовать. В качестве последней попытки я попробовал google: остановка отладки "org. apache .commons.configuration", и Google отправил меня на мой собственный вопрос, ха-ха
Вот мой log4j. xml, который не кажется чтобы остановить org. apache .commons.configuration из каждой отладочной печати jar при каждой инициализации этих классов (что происходит несколько сотен раз в секунду).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="CA" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
</appender>
<logger name="org.apache.commons.configuration">
<level value="error"/>
</logger>
<root>
<priority value="off"/>
<appender-ref ref="CA"/>
</root>
</log4j:configuration>
Я перестроил свой проект и переупаковал мою банку. Я надеюсь, что мне не нужно помещать log4j. xml в папку ресурсов каждого Jar-файла? : /
Есть ли способ узнать, загружается ли файл log4j. xml?
Есть ли что-то, что мне нужно сделать, чтобы все Jar, которые предположительно запускают свои собственные экземпляры log4j, использовали этот log4j. xml?
Я попробовал это сейчас для моего основного метода:
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.xml");
Logger.getRootLogger().setLevel(Level.ERROR);
но я все еще вижу спам консоли с сообщениями DEBUG от org. apache .commons.configuration
- edit 2 -
Все еще застрял , Я попытался выполнить простой базовый c пример, и вывод DEBUG все еще появляется в консоли.
Вот мой простой основной метод:
public static void main(String[] args) throws ConfigurationException {
PropertyConfigurator.configure("log4j.xml");
Logger.getRootLogger().setLevel(Level.ERROR);
PropertiesConfiguration config = new PropertiesConfiguration("log4j.xml");
}
Вот импорт:
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
3-я строка приводит к появлению этого вывода:
10:04:08.526 [main] DEBUG org.apache.commons.configuration.PropertiesConfiguration - FileName set to log4j.xml
10:04:08.536 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - ConfigurationUtils.locate(): base is null, name is log4j.xml
10:04:08.536 [main] DEBUG org.apache.commons.configuration.DefaultFileSystem - Could not locate file log4j.xml at null: no protocol: log4j.xml
10:04:08.546 [main] DEBUG org.apache.commons.configuration.ConfigurationUtils - Loading configuration from the path log4j.xml
Вот log4j. xml, который, как я подтвердил, загружается, переименовывая его и видя ошибку загрузочного файла.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<root>
<level value="error"/>
<priority value="off"/>
</root>
<logger name="org.springframework">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons.configuration">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons.configuration.PropertiesConfiguration">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache.commons">
<level value="error"/>
<priority value="off"/>
</logger>
<logger name="org.apache">
<level value="error"/>
<priority value="off"/>
</logger>
</log4j:configuration>