Java-动态更改日志记录级别 [英] Java - dynamically change logging level

查看:690
本文介绍了Java-动态更改日志记录级别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望能够告诉JVM在执行链中的某个点停止记录某些级别的消息.在某些时候,我只想记录SEVERE级别的消息,所以我正在考虑这样做:

I would like to be able to tell the JVM to stop logging certain level of messages at some point in the execution chain. At some point I want to only log messages with SEVERE level, so I was thinking of doing this:

    for(Enumeration<String> loggerNames = logManager.getLoggerNames(); loggerNames.hasMoreElements();){
        String name = loggerNames.nextElement();
        Logger nextLogger = logManager.getLogger(name);
        if(nextLogger != null)
            nextLogger.setLevel(Level.SEVERE);
    }

是否有更干净的方法来实现相同的逻辑,即设置一个全局变量,除非严重,否则该全局变量将停止打印到日志?我需要区分控制台输出(测试中)和实时文件输出,所以我可以在处理程序(控制台和文件)上设置这些级别吗?

Is there a cleaner way to achieve the same logic i.e. set a global variable that would stop printing to log unless SEVERE? I need to distinguish between Console output (in test) and file output in live, so I could potentially set these level on the handler (console and File)?

推荐答案

回答自己的问题:

这正是我所需要的:

Handler[] handlers =
  Logger.getLogger( "" ).getHandlers();
for ( int index = 0; index < handlers.length; index++ ) {
  handlers[index].setLevel( Level.SEVERE);
}

这篇关于Java-动态更改日志记录级别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆