jdk自带的日志,结构并不复杂,功能也能满足绝大部分功能。日志写入位置是开放的,只要继承了handler都可以接收日志的写入。handler本身依赖于LogRecord对象,该对象代表一个日志。Handler接收到日志对象后调用Logger绑定的Formater将日志格式化为指定格式。
然后将格式化的消息依次写入Handler中。日志对象的字段中有个Leval,是一个枚举,枚举中含有一个int类型值,这个值可以用来代表日志的等级。Logger也绑定一个Level,只有Logger的Level高于日志对象的Level时,日志才不会被拒绝。外部通过一个LoggerManager管理日志。来看看这复杂的类结构

demo如下:

public static void main(String[] args) throws IOException, DataFormatException {
Logger logger = LogManager.getLogManager().getLogger("global");
logger.info("test");
logger.log(Level.INFO, "info");
Handler handler = new Handler(){ @Override
public void publish(LogRecord record) {
System.out.println(record.getMessage()); } @Override
public void flush() { } @Override
public void close() throws SecurityException { } };
handler.setLevel(Level.INFO);
logger.addHandler(handler);
logger.config("我写入失败");
logger.info("我写入成功了");
Filter filter = new Filter(){
public boolean isLoggable(LogRecord record) {
return !record.getMessage().contains("不文明");
}
};
logger.setFilter(filter);
logger.info("不文明语言无法写入");
logger.info("文明语言可以写入"); }

运行结果:

八月 12, 2017 1:18:27 上午 demo.nio.CrcDemo main
INFO: test
八月 12, 2017 1:18:27 上午 demo.nio.CrcDemo main
INFO: info
八月 12, 2017 1:18:27 上午 demo.nio.CrcDemo main
INFO: 我写入成功了
八月 12, 2017 1:18:27 上午 demo.nio.CrcDemo main
INFO: 文明语言可以写入
我写入成功了
文明语言可以写入

java.util.logging jdk日志详解的更多相关文章

  1. java.util.logging.Logger使用详解 (转)

    http://lavasoft.blog.51cto.com/62575/184492/ ************************************************* java. ...

  2. java.util.logging.Logger 使用详解

    概述: 第1部分 创建Logger对象 第2部分 日志级别 第3部分 Handler 第4部分 Formatter 第5部分 自定义 第6部分 Logger的层次关系 参考 第1部分 创建Logger ...

  3. 2.java.util.logging.Logger使用详解

    一.java.util.logging.Logger简介 java.util.logging.Logger不是什么新鲜东西了,1.4就有了,可是因为log4j的存在,这个logger一直沉默着, 其实 ...

  4. java.util.logging.Logger使用详解

    一.创建Logger对象   static Logger getLogger(String name)           为指定子系统查找或创建一个 logger. static Logger ge ...

  5. java.util.ResourceBundle国际化用法详解

    java.util.ResourceBundle国际化用法详解 初识国际化和ResourceBundle 这个类主要用来解决国际化和本地化问题.国际化和本地化可不是两个概念,两者都是一起出现的.可以说 ...

  6. 通配置文件的方式控制java.util.logging.Logger日志输出

    转自:http://zochen.iteye.com/blog/616151 简单的实现了下利用JDK中类java.util.logging.Logger来记录日志.主要在于仿照log4j方式用配置文 ...

  7. java.util.logging.Logger日志生成过程浅析 (转)

    http://www.tuicool.com/articles/vy6Zrye ****************************************** java.util.logging ...

  8. 【java】java自带的java.util.logging.Logger日志功能

    偶然翻阅到一篇文章,注意到Java自带的Logger日志功能,特地来细细的看一看,记录一下. 1.Java自带的日志功能,默认的配置 ①Logger的默认配置,位置在JRE安装目录下lib中的logg ...

  9. java.util.ConcurrentModificationException 异常问题详解

    环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修改就会出现java.util.ConcurrentModificationException异常, ...

随机推荐

  1. Python 事件

    from multiprocessing import Process,Event e = Event() #创建事件对象,这个对象的初识状态为False print('e的状态是:',e.is_se ...

  2. Shell 脚本元组+for循环

    #!/bin/bash#by:V log_dir=(/data/logs/anjubao_syncapi /data/logs/anjubao_wechat) daytime=`date -d ' - ...

  3. testDecoration

    def count(): fs = [] for i in range(1,4): def f(): n=i*i return n fs.append(f) return fs c1,c2,c3 = ...

  4. 初窥async,await

    首先是一道今日头条的面试题:(听说是今日头条的并且已经烂大街了) async function async1() { console.log( 'async1 start' ) await async ...

  5. 使用maven profile指定配置文件打包适用多环境

    新建maven项目,   在pom.xml中添加 profile节点信息如下: <profiles> <profile> <!-- 开发环境 --> <id& ...

  6. 在linux中编译grpc

    环境: centos_7_x86_x64 一.下载 1)下载grpc源代码:grpc-1.2.0.zip 2)下载grpc依赖库: 1)benchmark-master.zip 2)boringssl ...

  7. PostgreSQL Oracle 兼容性之 - sys_guid()

    Oracle 使用sys_guid()用来产生UUID值.  在PostgreSQL中有类似的函数,需要安装uuid-ossp插件.  如果用户不想修改代码,还是需要使用sys_guid()函数的话, ...

  8. keil5 MDK 链接报错 Error: L6410W 解决

    keil5 MDK 报错 Build target 'Project' linking... .\Output\Project.axf: Warning: L6310W: Unable to find ...

  9. Node安装及自定义config

    下载Node.js , Windows下安装一键到底, 没有什么说的. 主要是默认无法流畅使用, 包括流畅下载, 全局缓存之类. 如下是进一步设置, 包括: - 设置淘宝镜像. - 增加Yarn(np ...

  10. WordPress版微信小程序2.1.8版发布

    近来的工作比较多,同时也在思考这个项目未来的发展方向,尽管不断有新的wordpress站长,利用我的开源程序搭建了微信小程序,但个人对这个项目的热情日渐减少,促使我不断完善和维护这个开源项目的动力也再 ...