加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

从java.util.logging中分离INFO和ERROR日志

发布时间:2020-12-15 01:10:27 所属栏目:Java 来源:网络整理
导读:我正在为Java应用程序配置日志记录.我的目标是两个日志:一个用于所有消息,一个用于高于特定级别的消息. 该应用程序使用java.util.logging.*类:我按原样使用它,所以我只能通过logging.properties文件进行配置. 我没有看到以不同方式配置两个FileHandler的方

我正在为Java应用程序配置日志记录.我的目标是两个日志:一个用于所有消息,一个用于高于特定级别的消息.

该应用程序使用java.util.logging.*类:我按原样使用它,所以我只能通过logging.properties文件进行配置.

我没有看到以不同方式配置两个FileHandler的方法:我见过的文档和示例设置了以下属性:

java.util.logging.FileHandler.level = INFO

虽然我希望两个不同的处理程序在不同级别登录到不同的文件.

有什么建议?

最佳答案
http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html很有帮助.您只能为任何单个记录器设置一个级别(您可以从记录器上的setLevel()方法中获知).但是,您可以采用两个常用级别中的最低级别,然后以编程方式进行筛选.

不幸的是,您无法使用配置文件执行此操作.要仅使用配置文件进行切换,您必须切换到类似于log4j的内容,您说这不是一个选项.

因此,我建议使用Filters更改代码中的日志记录,如下所示:

class LevelFilter implements Filter {
    private Level Level;
    public LevelFilter(Level level) {
        this.level = level;
    }
    public boolean isLoggable(LogRecord record) {
        return level.intValue() < record.getLevel().intValue();
    }
}

然后在第二个处理程序上,执行setFilter(new LevelFilter(Level.INFO))或其他任何操作.如果您希望文件可配置,您可以使用自己编写的日志属性设置,并使用常规的Properties方法.

我认为一旦你有了设计,用于设置两个文件处理程序和程序代码的配置代码就相当简单了,但是如果你想要更多的细节,我可以添加注释,然后编辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读