浅析java.util.logging

级别

  1. SEVERE (highest value, a serious failure)

  2. WARNING (a potential problem)

  3. INFO (informational messages)

  4. CONFIG (configuration messages)

  5. FINE (tracing information)

  6. FINER (a fairly detailed tracing message)

  7. FINEST (lowest value, a highly detailed tracing message)

  8. OFF (turn off logging)

  9. ALL (enable logging of all messages)

  • Logger

对外发布的日志记录器,应用系统可以通过该对象完成日志记录的功能

  • LogRecord

日志信息描述对象

  • LogManager

单一的全局 LogManager 对象,可用于维护 Logger 和日志服务的一组共享状态

  • Level

定义日志的记录级别

  • Handler

日志处理器,接收处理LogRecord对象

  • Formatter

日志格式化转换器,在Handler处理日志时,提供格式化操作

  • Filter

日志过滤器,接口对象,在日志被 Handler 处理之前,起过滤作用

流程

//在Logger工厂(LogManager)中生成一个名为log.demo的日志管理器
Logger logDemo = Logger.getLogger("log.demo");  

// 记录一条日志级别为Level.SEVERE的日志消息
logDemo.severe("this is a severe log");    

//在Logger中,根据日志级别和日志消息,生成LogRecord对象
public void log(Level level, String msg) {
    if (!isLoggable(level)) {
        return;
    }
    LogRecord lr = new LogRecord(level, msg);
    doLog(lr);
}

//在Logger中,调用handler处理logRecord对象
for (Handler handler : loggerHandlers) {
    handler.publish(logRecord);
}

//在handler中,调用formatter格式化logRecord
msg = getFormatter().format(logRecord);

示例

Logger logger = Logger.getLogger(App.class.getName());
//构造Handler
FileHandler handler = new FileHandler("E:\\TMP\\log.xml");
//为handler设置formatter
handler.setFormatter(new SimpleFormatter());
//构造Filter
Filter filter = new Filter() {
    @Override
    public boolean isLoggable(LogRecord record) {
        if (record.getLevel().intValue() == Level.WARNING.intValue()) {
            return false;
        }
        return true;
    }
};
//为handler设置filter
handler.setFilter(filter);
//为logger设置filter
logger.setFilter(filter);
//为logger设置handler
logger.addHandler(handler);

疑问

  1. 并没有设置Handler,默认的Handler是如何被设置的?

在我们应用程序中第一次调用Logger.getLogger("log name")时,自动生成了名字为空白字符的根日志对象的。 根日志对象设置了ConsoleHandler,所以没有显示指定Handler时,其也能在控制台中输出日志消息。

转载于:https://my.oschina.net/u/3226520/blog/826508

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值