Как полностью отключить JAudioTagger Logger - PullRequest
0 голосов
/ 09 июня 2018

Пользуюсь библиотекой JAudioTagger уже 2 года, я не могу понять, как отключить ее Logger.

Также спросил владельца проекта: https://bitbucket.org/ijabz/jaudiotagger/issues/257/how-to-disable-jaudio-tagger-logger

Что я пробовал?(Не повезло)

Logger.getLogger("org.jaudiotagger").setLevel(Level.OFF);
Logger.getLogger("org.jaudiotagger.tag").setLevel(Level.OFF);
Logger.getLogger("org.jaudiotagger.audio.mp3.MP3File").setLevel(Level.OFF);
Logger.getLogger("org.jaudiotagger.tag.id3.ID3v23Tag").setLevel(Level.OFF);

Пока я просто отключил Logger вообще из приложения, но мне это нужно, что я могу сделать?Консоль практически непригодна из-за тонны сообщений JAudioTagger.

Временное решение (хотя мне нужен регистратор для приложения ...)

LogManager.getLogManager().reset();

У меня естьобыскал всю сеть, я не могу найти решение, так как прошло 2 года ... вот почему я спрашиваю здесь.


Решение 27/06/2018 Для заинтересованных лиц:)

static {

    //Disable loggers               
    pin = new Logger[]{ Logger.getLogger("org.jaudiotagger") };

    for (Logger l : pin)
        l.setLevel(Level.OFF);
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Вы можете определить конфигурацию для java.util.logging, используемого в библиотеке jaudiotagger

static {
    java.util.logging.LogManager manager = java.util.logging.LogManager.getLogManager();
    try {
        manager.readConfiguration(new FileInputStream("audioLogger.properties"));
    } catch (IOException ignored) {}
}

, а затем настроить ведение журнала в указанном файле свойств

handlers=java.util.logging.ConsoleHandler
org.jaudiotagger.level=OFF
0 голосов
/ 10 июня 2018

Вы должны иметь сильную ссылку на ваши регистраторы .В противном случае, ваше изменение уровня игнорируется, когда регистратор собирается мусором.

Имя регистратора должно соответствовать регистратору, используемому в JAudioTagger.Вы можете найти имена регистраторов, просмотрев исходный код.В противном случае измените формат для SimpleFormatter, включив в него имя регистратора , равное %3$s (javadocs отключены на единицу).Когда вы запустите свою программу, в ней будут перечислены имена регистраторов, которые вам нужно отключить.

Используйте тестовую программу форматирования , чтобы убедиться, что свойство форматирования настроено правильно.Ваш шаблон может быть таким же простым, как приведенный выше шаблон, или что-то более подробное, например %1$tH:%1$tM:%1$tS.%1$tL - [%3$s] -[%4$s] %5$s%n

Другой вариант - добавить код для вывода списка всех регистраторов непосредственно перед выходом из программы.

private static void findFormatters() {
    final LogManager manager = LogManager.getLogManager();
    synchronized (manager) {
        final Enumeration<String> e = manager.getLoggerNames();
        while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
        }
    }    
}

JConsole также может перечислять все активные регистраторы.

...