11.5 日志记录

可以通过Loger.getGlobal().info(xxxx);的方式来记录log。

11.5.2 高级日志

1)通过一个包名来 创建一个新的日志记录器。
private static final Logger logger = Logger.getLogger("my.learvjava.learnlog");

2)日志记录器也具有层次结构,且日志记录器的父子之间将共享某些属性,比如如果对com.mycompany设置了日志级别,那么其子记录器也会继承这个级别。
3)有以下7个日志记录器级别:
SEVER
WARNING
INFO
CONFIG
FINE
FINER
FINEST
默认值记录前三个级别。
可以使用Level.ALL来开启所有级别的记录,或者使用 Level.OFF来关闭所有级别的记录。
4)由于默认记录了info及其以上的级别,所以要使用    CONFIG, FINE, FINER, FINEST来记录那些有助于诊断,但是对程序员没有太大意义的调试信息。

5)void entering(xxx), void exiting(xxxx)将生成finer级别的日志信息。
6)可以用下面的方法来记录日志中包含的异常信息。
  1. if(xxxx){
  2. IOException e = new IOException("xxx);
  3. logger.throwing("com.mycompany.mlib.Reader", 'read", e);
  4. throw e;
  5. }
调用throwing可以记录一条finner级别的记录和一条以THROW开始的信息。


11.5.3  修改日志管理配置
    默认情况下位于e/lib/logging.properties文件内。
     如果要修改,就需要在启动的时候通过如下命令来修改:
    java     -Djava.util.logging.config.file=configfile mainjavaclass
    因为默认的日志信息是记录在java.util.logging.config.file这个静态变量中的。
    在main方法中调用System.setProperties("java.util.logging.config.file", file)不会起作用,其原因是日志管理器在vm启动过程中被初始化,他会在main之前被执行。
    可以通过在logging.properties中添加如下命令来设置日志记录级别
    .level=FINE
    
    
11.5.4 本地化
    虽然五年前我们在做我们应用程序的本地化的时候完全是靠自己想象的,但是现在回头来看,其实我们做的东西和java的本地化的思路是类似的,都是针对不同的语言提供不同的语言文件,通过key=value的文本文件的方式来提供。
    java中稍微有点区别,他允许同时存在多种语言的语言文件,只是在名字中增加语言前缀,而我们是通过将语言文件放在语言文件夹中来决定的。
    
    这也侧面说明了当编程进行到一定阶段之后,解决问题的思路是想通的。
    
    
11.5.5 处理器
    与日志记录器一样,日志处理器也有日志记录级别。对于一个要被记录的日志,他的日志级别必须高于日志记录器和处理器的阈值。
    日志管理器配置文件中记录的控制台处理器的日志级别为:
    java.util.logging.ConsoleHandler.level=INFO
    
    也可以绕过配置文件,不适用默认的处理器,而适用自定义的处理器:
 
  1. Logger logger = Logger.getLogger("com.mycompany.myapp");
  2. logger.setLevel(Level.FINE);
  3. logger.setUseParantHanler(false);
  4. Handler handler = new ConsoleHandler();
  5. handler.setLevel(Level.FINE);
  6. logger.addHandler(handler);
   要想将日志发送到其他地方,就需要添加其他的处理器。java api为此提供了两个很有用的处理器:FileHandler, SocketHandler。
  1. FileHandler fileHandler = new FileHandler();
  2. logger.addHandler(fileHandler);
    如果希望写更复杂的流处理器,就应该扩展Handler类,并自定义public/flush/close方法。
    
11.5.6 过滤器
    只需要实现Filter接口的
    boolean isLoggable(LogRecord record);
    方法,就可以定义一个自己的过滤器。
    
    记录器和处理器都可以设置过滤器,每个记录器和处理最多只能设置一个过滤器。
    
    
 11.5.7 格式化器
    实现Formatter接口,然后实现其中的 String format(LogRecord record)方法即可。
    然后在通过调用处理器的setFormater(Fomater formater)方法来设置。
    
       






Java系列:《Java核心技术 卷一》学习笔记,chapter11 记录日志的更多相关文章

  1. 我爱Java系列之《JavaEE学习笔记day12》---【缓冲流、转换流、序列/反序列化流、打印流】

    [缓冲流.转换流.序列/反序列化流.打印流] 一.缓冲流 1.字节缓冲输出流 java.io.BufferedOutputStream extends OutputStream 高效字节输出流 写入文 ...

  2. 《Java多线程编程核心技术》学习笔记

    第2章 对象及变量的并发访问 2.1 synchronized同步方法 方法内的变量为线程安全: 方法内部的变量是线程私有的 方法中有一个变量num,后面对它赋值 两个线程同时调用这个方法,对其赋不同 ...

  3. Java web与web gis学习笔记(二)——百度地图API调用

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  4. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  5. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  6. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  7. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  8. Java程序猿的JavaScript学习笔记(1——理念)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  10. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

随机推荐

  1. java异常 总结

    异常: 是什么?是对问题的描述,将问题进行对象的封装. 异常体系: Throwable |--Error |--Exception |--RuntimeException 异常体系的特点: 异常体系中 ...

  2. swift网络编程入门应用:天气预报

    学习来自<小波说雨燕 第二季 网络编程(入门篇)> 工具:xcode6.4 首先在Main.storyborad中添加并设置好三个label做简单的界面显示: import UIKit / ...

  3. android基础开发之scrollview

    scrollView 是android系统提供的一种 特殊的展示view. 其实我们很早就遇到过scrollview的东东,比如listview. 而google官方文档也提出,不要混合使用scrol ...

  4. rabbitmq-server启动不了,安装erlang,安装rabbitmq-server

    sudo rabbitmq-server start,虽然现实success,但是查看状态,sudo rabbitmq-server status发现居然没有启动,报错是不是端口占用(查看日志/var ...

  5. 2013MPD上海6.23 PM 光耀:读心术,用户心理的产品之道

    创新的前提是:制度与组织的创新!!!!!!!!!!!!!! 光耀:腾讯互联网业务产品经理(腾讯公司互联网业务系统产品经理.在电子商务.社会化媒体等方面有深入研究.参与腾讯多个重要项目产品工作) 什么是 ...

  6. C#照片批量压缩小工具

    做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...

  7. Python基本数据结构-集合-创建/与其他类型比较

  8. MAC、IDFA、IMEI正则表达式

    一.安卓: MAC:接入网络的设备的序号,唯一值.用 16 进制数表示,由 0-9,A-F 组成,如:44:2A:60:71:CC:82 Uuid 正则表达式: ^([0-9a-fA-F]{2})(( ...

  9. ggplot2颜色操作

    1.颜色列表

  10. xcode 自定义include路径