GOX*_*LUS 5 java logging java.util.logging jaudiotagger
已经使用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);
Run Code Online (Sandbox Code Playgroud)
现在我只是从应用程序中禁用了 Logger,但我需要它,我该怎么办?由于大量 JAudioTagger 消息,控制台几乎无法使用。
临时解决方案(虽然我需要应用程序的记录器......)
LogManager.getLogManager().reset();
Run Code Online (Sandbox Code Playgroud)
我已经搜索了所有网络,我找不到像 2 年那样的解决方案......这就是我在这里问的原因。
解决方案27/06/2018 对于有兴趣的人:)
static {
//Disable loggers
pin = new Logger[]{ Logger.getLogger("org.jaudiotagger") };
for (Logger l : pin)
l.setLevel(Level.OFF);
}
Run Code Online (Sandbox Code Playgroud)
您必须对您的记录器保持强有力的引用。否则,当记录器被垃圾收集时,您的级别更改将被忽略。
记录器名称需要与 JAudioTagger 中使用的记录器匹配。您可以通过查看源代码找到记录器名称。否则,更改 的格式SimpleFormatter
以包含记录器名称%3$s
(javadoc 相差 1)。当您运行程序时,这将列出您需要关闭的记录器名称。
使用格式化程序测试程序确保格式属性配置正确。您的模式可以像上面的模式一样简单,也可以有更多细节,例如%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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
JConsole还可以列出所有活动记录器。
归档时间: |
|
查看次数: |
484 次 |
最近记录: |