当前位置: 首页 > 面试题库 >

更改Logger实例的全局设置

程城
2023-03-14
问题内容

我使用java.util.logging.Logger作为应用程序的日志记录引擎。每个类都使用自己的记录器,即每个类都有:

private final Logger logger = Logger.getLogger(this.getClass().getName());

我想为我所有的班级设置一个日志记录级别,并且能够更改它(即,将设置放在一个地方)。除了使用全局Level变量并手动将每个记录器设置为变量之外,还有其他方法吗?


问题答案:

正如Andy回答的那样,在大多数情况下,您应该使用属性文件和VM参数,因此它与您的代码无关。

但是,如果您出于某种原因要进行编程(我自己有一个很好的理由),您也可以这样访问Handler:

Logger rootLogger = LogManager.getLogManager().getLogger("");
rootLogger.setLevel(Level.INFO);
for (Handler h : rootLogger.getHandlers()) {
    h.setLevel(Level.INFO);
}

编辑
我将setLevel添加到根记录器中,如searchengine27在他的回答中指出的那样。

处理程序是您通过属性或通过编程设置的文件或控制台处理程序。

或像这样更改过滤器:

Logger rootLogger = LogManager.getLogManager().getLogger("");
rootLogger.setFilter(new Filter() {
    @Override
    public boolean isLoggable(LogRecord record) {
            return "something".equals(record.getLoggerName());
    }
});


 类似资料:
  • 问题内容: 因此,似乎无法执行以下操作(由于没有方法,因此会引发错误): 并且必须使用以下旧技巧: 有没有一种简单/干净的方法(也许可以单独设置-和-轴参数,等等)? PS如果没有,为什么? 问题答案: 上面的答案无效,如注释中所述。我建议使用刺。

  • 主要用于设置三级权限以及密码策略等。 该功能用于设置是否启用三级权限以及密码策略相关配置。参数设置完成后,需要5分钟后生效。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “系统配置/全局设置/全局设置” 菜单项,进入全局设置页面。 目前全局设置支持设置以下选项: 配额检查开关:设置是否启用配额检查,默认关闭配额检查。如用户有配额限制的要求,可以开启配额检查,开启后,用户可以在域或

  • 目前仅支持字典设置和全局设置,参数配置后全局生效。 字典设置 用于自定义云管平台中常用菜单的显示名称。 全局设置 主要用于设置三级权限以及密码策略等。

  • 1)加密设置 加密设置分为,PC加密设置和移动加密设置。 PC加密设置: 当PC加密为“打开”状态时,新上传的视频会进行加密(加密视频只能使用获得场景视频播放器),已上传的视频保持不变。 当PC加密为“关闭”状态时,新上传的视频不会进行加密,已上传的视频保持不变。 移动加密设置: 非加密——当设置成【非加密】时,移动端将不受限制,此时不受保护。 WEB授权——可以在移动WEB端播放和APP端播放,

  • 在直播管理页面点击 “全局设置” ,观看者可以在观看端对客户端进行打赏。打赏分为现金打赏 和 道具打赏 。 打赏设置 说明: 1)全局设置中支持配置现金打赏及道具打赏相关参数 2)直播间可应用全局打赏设置,应用后,观看端可对讲师进行打赏 敏感词设置 说明: 1)全局设置中支持设置敏感词,支持手动单个添加及应用模板批量导入 2)已添加的敏感词支持删除操作,也可一键情况敏感词列表 3)支持按角色进行过

  • 问题内容: 我正在使用Nimbus L&F。我正在尝试通过使用以下代码来全局更改所有JTable的字体大小: 它正在工作,应用程序中所有JTable的行都使用新字体。我正在使用较大的字体大小,以使表在较大的分辨率下更具可读性。 但是问题是行高没有改变,导致字体被截断。我尝试了以下代码: 但这并没有改变显示表中的任何内容。 是否可以在不调用每个JTable实例的情况下全局更改行高? 问题答案: 基本