JDK自带的log工具

Java.util.logging:JDK标准库中的类,是JDK 1.4 版本之后添加的日志记录的功能包。
Java Logging API提供了七个日志级别用来控制输出。

级别 调用方法 含义
SEVERE severe() 严重
WARNING warning() 警告
INFO info() 信息
CONFIG config() 配置
FINE fine() 良好
FINER finer() 较好
FINEST finest() 最好
相关术语
1. logger
  • 代码需要输入日志的地方都会用到Logger,这几乎是一个JDK logging模块的代言人,我们常常用Logger.getLogger("com.aaa.bbb");获得一个logger,然后使用logger做日志的输出。
  • logger其实只是一个逻辑管理单元,其多数操作都只是作为一个中继者传递别的角色,比如说:Logger.getLogger(“xxx”)的调用将会依赖于LogManager类,使用logger输入日志信息的时候会调用logger中的所有handler进行日志的输入。
  • logger是有层次关系的,每个logger通常以java包名为其名称。子logger通常会从父logger继承logger级别、handler、Resource等。
    整个JVM会存在一个名称为空的root logger,所有匿名的logger都会把root logger作为其父。
LogManager
  • 整个JVM内部所有logger的管理,logger的生成、获取等操作都依赖于它,也包括配置文件的读取。LogManager中会有一个Hashtable[private Hashtable<String,WeakReference<Logger>> loggers]用于存储目前所有的logger,如果需要获取logger的时候,Hashtable已经有存在logger的话就直接返回Hashtable中的,如果hashtable中没有logger,则新建一个同时放入Hashtable进行保存。
2. Handler
  • 用来控制日志输出的,比如JDK自带的ConsoleHanlder把输出流重定向到System.err输出,每次调用Logger的方法进行输出时都会调用Handler的publish方法,每个logger有多个handler。我们可以利用handler来把日志输入到不同的地方(比如文件系统或者是远程Socket连接).
3. Formatter
  • 日志在真正输出前需要进行一定的格式化:比如是否输出时间?时间的格式?是否输入线程名?是否使用国际化信息等。
4. Log Level
  • JDK Logging把日志分为如下几个级别,等级依次升高。all→finest→finer→fine→config→info→warning→server→off,如果将级别设为info,那么info之前的低级别信息将不会输出,只有info级别只有的信息会输出,通过控制级别达到控制输出的目的。需要注意,不仅是logger具有级别,handler也是有级别,也就是说如果某个logger级别是FINE,客户希望输入FINE级别的日志,如果此时logger对应的handler级别为INFO,那么FINE级别日志仍然是不能输出的。
对应关系
  1. LogManager与logger是1对多关系,整个JVM运行时只有一个LogManager,且所有的logger均在LogManager中。
  2. logger与handler是多对多关系,logger在进行日志输出的时候会调用所有的hanlder进行日志的处理。
  3. handler与formatter是一对一关系,一个handler有一个formatter进行日志的格式化处理。
  4. 很明显:logger与level是一对一关系,hanlder与level也是一对一关系 。
简单使用
public class LogJDKTest{
    public static Logger log = Logger.getLogger(LogJDKTest.class.getName());

    public static void main(String[] args){
        // all→finest→finer→fine→config→info→warning→server→off
        // 级别依次升高,后面的日志级别会屏蔽之前的级别
        log.setLevel(Level.INFO);
        log.finest("finest");
        log.finer("finer");
        log.fine("fine");
        log.config("config");
        log.info("info");
        log.warning("warning");
        log.severe("server");
    }
}
public class LogJDKTest{
    public static Logger log = Logger.getLogger(LogJDKTest.class.toString());
 
    static{
        // new一个控制台处理器
        Handler console = new ConsoleHandler();
        // 给处理器设置级别
        console.setLevel(Level.SEVERE);
        // 给logger设置处理器
        log.addHandler(console);
    }
 
    public static void main(String[] args){
        log.setLevel(Level.INFO);
        log.finest("finest");
        log.finer("finer");
        log.fine("fine");
        log.config("config");
        log.info("info");
        log.warning("warning");
        log.severe("server");
    }
 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 作为一个有追求的程序猿,你了解你见到的各种日志吗?JDK的日志、Tomcat的日志、还有Logback的日志,他们...
    帅可儿妞阅读 2,921评论 0 1
  • idea 添加注释/** 然后回车 选中代码块 Ctrl+Shift+/ 重点推荐阅读:https://www....
    Helen_Cat阅读 19,738评论 0 37
  • logging介绍Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块...
    modingfa阅读 6,812评论 0 2
  • 一、给路由添加正则表达式 给路由参数添加正则表达式的原因:在实际开发时,url中往往会带有很多的参数,例如:/ad...
    IIronMan阅读 1,617评论 1 12
  • 在现实生活中,记录日志非常重要。银行转账时会有转账记录;飞机飞行过程中,会有黑盒子(飞行数据记录器)记录飞行过程中...
    chliar阅读 754评论 1 0