zoukankan      html  css  js  c++  java
  • 【技术累积】【点】【java】【4】日志级别

    闲聊

    水文也是文,写总比不写好。


    日志级别

    虽然对其他语言的日志系统也不甚了解,但还是感觉Java的日志有些麻烦,当然也可以说是发展已久,多有变化,多有完善吧。

    从日志级别来说,有从高到低的八个级别
    OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL

    ALL 最低等级的,用于打开所有日志记录。

    TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。

    DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。

    INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。

    WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。

    ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。

    FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。

    OFF 最高等级的,用于关闭所有日志记录。

    如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出,而INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

    常用

    最常用的几个级别是INFO,ERROR;

    极端一点会用到TRACE;

    重要的是考虑用途,用法。

    一方面,日志是记录功能;另一方面,这种特殊的分级,本身就是一种tag,对不同的位置使用不同的输出级别,有助于后面快速定位日志,也就能快速定位问题,也就牛逼是吧,也就走上人生巅峰是吧~

    比如,谐哥大佬给的建议就是,异常处,使用ERROR级别,而一般的地方使用INFO级别,有效区分;

    代码和配置

    写的话,一方面要配置,一方面要在代码中使用;

    配置,如上文所说,定大范围,根据需要来;

    原则很简单,不要太多日志,但关键日志不能少;

    一般配置的话,还是INFO,ERROR比较多,个人倾向于INFO,还是看项目的调用情况;具体一般都是下面这个样子:

     <root level="debug">
            <appender-ref ref="STDOUT"/>
        </root>
    

    代码方面的话,其实一开始只要会用即可,但后期还是关注下性能问题:Java日志性能那些事

    直白的说,注意输出内容格式的书写,多用占位符(异常e放在最后面,不要用占位符),少用字符串链接:

    logger.debug("Entry number: " + i + " is " +  String.valueOf(entry[i]));
    logger.debug("Entry number: {} is {}", i, entry[i]);
    
    logger.error("Entry number: {} is {},exception:", i, entry[i],e);
    

    也因此有时需要输出前进行判断:

            ·
            if (LOGGER.isInfoEnabled()){
                LOGGER.info("eval结果:{}", JSONObject.toJSONString(output));
            }
    

    适用性最强的还是,别tm乱打日志!!

  • 相关阅读:
    【Leetcode】【Easy】Remove Duplicates from Sorted List
    【Leetcode】【Easy】Pascal's Triangle II
    【Leetcode】【Easy】Pascal's Triangle
    【Leetcode】【Easy】Binary Tree Level Order Traversal II
    【Leetcode】【Easy】Binary Tree Level Order Traversal
    【Leetcode】【Easy】Maximum Depth of Binary Tree
    【Leetcode】【Easy】Minimum Depth of Binary Tree
    【Leetcode】【Easy】Balanced Binary Tree
    【Leetcode】【Easy】Symmetric Tree
    如何使用Action.Invoke()触发一个Storyboard
  • 原文地址:https://www.cnblogs.com/andy1202go/p/9356618.html
Copyright © 2011-2022 走看看