【问题标题】:How to disable JAudioTagger Logger completely如何完全禁用 JAudioTagger Logger
【发布时间】:2018-06-09 20:53:27
【问题描述】:

已经使用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);
}

【问题讨论】:

  • 嘿,过去,我不是很有耐心,在我的代码中分叉了这个库并删除了所有的日志记录。它也变得快了一倍:) 不过,这不是推荐的解决方案。

标签: java logging java.util.logging jaudiotagger


【解决方案1】:

你必须hold a strong reference to your loggers。否则,当记录器被垃圾收集时,您的级别更改将被忽略。

记录器名称需要与 JAudioTagger 中使用的记录器匹配。您可以通过查看源代码找到记录器名称。否则,将format of the SimpleFormatter 更改为包含logger name,即%3$s(javadocs 减一)。当您运行程序时,这将列出您需要关闭的记录器名称。

使用formatter test program 确保您的格式属性配置正确。你的模式可以像上面的模式一样简单,也可以像%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 还可以列出所有活动的记录器。

【讨论】:

  • 很好的答案 :) 您能否为 SimpleFormatter 提供一些代码,我喜欢 O_o 例如,我想知道所有记录器的名称,但我得到的是 '' '' 空格。跨度>
【解决方案2】:

您可以为 jaudiotagger 库中使用的 java.util.logging 定义配置

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2020-07-02
    • 2019-12-11
    • 2017-10-13
    相关资源
    最近更新 更多