log4j⽇志级别及使⽤规范
log4j定义了8个级别的log(出去OFF和ALL,可以说分为6个级别),分别为:
1、DEBUG 指出细粒度信息事件对调试应⽤程序是⾮常有帮助的,就是输出debug的信息。⼀般⾃⼰单独调试的时候⽤的⽐较多。举个例⼦:假如从数据库⾥⾯取出所有的⽤户信息,放到⼀个List⾥⾯,如果想要查看每个⽤户的具体情况,⼀般使⽤log.debug()进⾏跟踪调试。只是为了加深对程序或者数据的理解,但是对线上运⾏没有实际的帮助就可以⽤debug。
2、INFO 表明消息在粗粒度级别上突出强调应⽤程序的运⾏过程,就是输出提⽰信息。程序启动、统计性、总结性信息或者运⾏过程中的提⽰性信息,⽐如程序初始化的时候,需要输出⼀下系统参数等,⼀般⽤info实现,还有刚才举得⽤户信息的例⼦,线上运⾏的时候只需要输出List⼤⼩等信息即可,此时⽤info。info级别监控系统运⾏情况,可以帮助程序员有效的了解程序的流转。(注意:索引资源组线上统⼀开启info级别⽇志)
3、WARN 概念⽐较模糊,很难确定界限,所以⼀般很少使⽤,使⽤最多的还是DEBUG 、INFO 、ERROR。
4、ERROR  指出虽然发⽣错误事件,但仍然不影响系统的继续运⾏。就是显⽰错误信息。举个例⼦,做
log4j2不打印日志
除法运算的时候,要判断分母是否为零,所以要捕获异常,发⽣异常的时候输出错误信息,并不影响程序的运⾏。
5、FATAL  指出每个严重的错误事件将会导致应⽤程序的退出。fatal⽤的场合也⽐较少,⼀般在程序发⽣不可逆转的错误或者朝着难以预计的⽅向运⾏⽤log.fatal(),注意,这个级别的⽇志还会导致程序的退出,这个也算和error的⼀个区别,error只是输出错误⽇志,并不影响程序运⾏。
6、ALL level: 是最低等级的,⽤于打开所有⽇志记录。
7、OFF level: 是最⾼等级的,⽤于关闭所有⽇志记录。
8、TRACE:designates finer-grained informational events than the DEBUG. Since: 1.2.12,很低的⽇志级别,⼀般不会⽤。
如果将log level设置在某⼀个级别上,那么⽐此级别优先级⾼的log都能打印出来,例如,如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出,⽽INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。Log4j建议只使⽤四个级别,优先级从⾼到低分别是ERROR、WARN、INFO、DEBUG。
从实验的结果可以看出,log4j默认的优先级为ERROR或者WARN(实际上是ERROR)。
⽇志记录器(Logger)的⾏为是分等级的。如下所⽰:
分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL或者您定义的级别。Log4j建议只使⽤四个级别,优先级从⾼到低分别是ERROR、WARN、INFO、DEBUG。
通过在这⾥定义的级别,您可以控制到应⽤程序中相应级别的⽇志信息的开关。⽐如在这⾥定义了INFO级别,则应⽤程序中所有DEBUG级别的⽇志信息将不被打印出来。
程序会打印⾼于或等于所设置级别的⽇志,设置的⽇志等级越⾼,打印出来的⽇志就越少。如果设置级别为INFO,则优先级⾼于等于INFO 级别(如:INFO、WARN、ERROR)的⽇志信息将可以被输出,⼩于该级别的如DEBUG将不会被输出。
注意事项:
1、  ERROR信息必须同时打印⽇志和堆栈信息。
2、线上⽇志统⼀设置为INFO级别。
3、线上⽇志按照天或者⼩时拆分。
4、⽇志存放⽬录采⽤相对路径。
5、⽇志打印输出⽂件的⼤⼩。