log4j日志基础详解

工作中,需要的日志过滤不出来。没用的日志打印一大堆,着实是一件令人头疼的事情。

由于对日志基础不了解,我和我们的开发小哥哥进行了沟通。

我:“胖白,咱们的日志能不能优化一下?每次都筛选不到我要的日志,而且咱们的日志磁盘都不够...”

胖白:“......噢,这个可以先关闭整体的DEBUG日志,然后通过相关的工程拿到对应的类,打开相关类DEBUG日志就好。要不再去了解一下log4j日志的一些基础知识吧?(小声的补充一句)”

为此,我整理了一些相关的日志基础,很快就能了解到打印日志、调整日志打印级别等相关的基本知识。

首先,简单介绍一下我们的主角log4j:

       它由三部分组成:

          1.loggers 负责捕获日志信息。

           2.appenders  负责输出信息到不同的目的地

           3.layouts 负责使用不同的样式输出日志

log4j框架中有两种对象:

     核心对象:框架的支撑对象,是框架必不可少的组成部分。

     支撑对象:这些都是框架可选的对象,用于提供额外重要的工作。

核心对象包括下面几种类型:

     logger对象,是最高的层,负责通过不同的风格转化日志信息,他提供给appender对象发布前的信息。(这里的层是指所处的位置)

     layout对象,用于提供格式化日志信息的风格,在发布日志信息前,使其变得可读,可重用。

     appender对象,这个对象属于底层的对象,它负责发布信息到不同的目的地,比如数据库,文件,控制台,UNIXsyslog等等。

这次我们要了解的就是logger对象:1.level对象:级别对象定义日志的粒度和优先级,有七种级别,日志标准的排序是: ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF

疑问1:

成子想问:如何关闭日志?

胖白为你解答:将日志级别提升到ERROR,很多日志就不打了,这就叫“关闭”。(这样也做到了,优先级低的日志不打印,以免占磁盘空间)

日志的级别:

      ALL 所有日志的级别都包括。

     DEBUG  指定的信息事件的粒度是DEBUG,在调试应用的时候会有帮助。

     ERROR  指定错误事件,并且这些事件还会保证应用继续运行。

     FATAL  指定严重的错误事件,该事件会导致应用暂停。

     INFO  指定信息消息,强调应用粗粒度的运行情况。

     OFF  最高等级,相当于关闭了日志。

     TRACE  指定比DEBUG更粗粒度的调试日志。

     WARN  输出具有潜在风险的信息。

熟悉上面的概念后,还要了解我们的代码是放在一个个包路径下的。

比如:com.baidu.cdo.A,表示有个A.java文件,放在文件夹/com/baidu/cdo下,框架支持用curl命令调整某个类的日志级别,比如:假如程序中默认日志级别为ERROR,你想打开上面那个类的DEBUG信息(结合上面熟悉到的概念,DEBUG级别日志能打印更多信息),可以用以下命令:
curl -X POST "http://localhost:18880/system/manage/loggers/com.baidu.cdo.A?level=DEBUG"(格式:curl -X POST "http://localhost:18880/system/manage/loggers/{包名/类名}?level=DEBUG")
如果想调整某个文件夹下所有类的日记级别,参数后面指定包名就好,如:
curl -X POST "http://localhost:18880/system/manage/loggers/com.baidu.cdo?level=DEBUG"(这里只要改动level字段里面的参数就好了)

所以,此刻你get到了吗?

猜你喜欢

转载自blog.csdn.net/weixin_39456575/article/details/111578699