代码之家  ›  专栏  ›  技术社区  ›  GOXR3PLUS

如何完全禁用Jaudiotager记录器

  •  3
  • GOXR3PLUS  · 技术社区  · 8 年前

    一直在使用 JAudioTagger 图书馆2年来,我一直想不出如何禁用它的记录器。

    还询问了项目业主: 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);
    

    目前,我只是从应用程序中禁用了记录器,但我需要它,我能做什么?由于大量jaudiotager消息,控制台几乎无法使用。

    临时解决方案(不过,我需要应用程序的记录器…)

    LogManager.getLogManager().reset();
    

    我搜遍了所有的网页,找不到像两年前那样的解决方案…这就是我为什么要问这里。


    解决方案 2018年6月27日,对于感兴趣的人:)

    static {
    
        //Disable loggers               
        pin = new Logger[]{ Logger.getLogger("org.jaudiotagger") };
    
        for (Logger l : pin)
            l.setLevel(Level.OFF);
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   jmehrens    8 年前

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

    记录器名称需要与jaudiotager中使用的记录器匹配。您可以通过查看源代码来查找记录器名称。否则,请更改 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 还可以列出所有活动的记录器。

        2
  •  0
  •   flederohr    7 年前

    可以为jaudiotager库中使用的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