logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(1)

Logback是java开发中使用非常广泛的日志框架,介绍的文章也非常多,但是针对于其中一个难点,就是pattern的使用,介绍的文章非常少,仅有的几篇中文介绍也基本都是非常简略的寥寥几句而已,正好最近开发的ELK模块需要用到Logback,就借此机会好好整理一下pattern的用法,希望能给需要的开发者带来些许便利。

因为本文集中介绍pattern的使用,所以我就搭建了一个非常简单的实例环境:

  1. 使用springboot项目,只选中web模块。
  2. 只创建一个最简单的Test类。
  3. 只添加一个logback.xml配置文件。

具体结构如下:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(2)

其中,demoApplication和Test的代码分别为:

DemoApplication代码:

package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); Test.divideByZero(); } }

Test代码为(只有一个除以零的方法):

package com.example.demo; import org.slf4j.LoggerFactory; public class Test { public static void divideByZero() { try { int i = 10 / 0; } catch (Exception err) { LoggerFactory.getLogger(Test.class).error(err.getLocalizedmessage()); } } }

logback.xml配置信息如下:

<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false" scan="true" scanPeriod="30 seconds"> <contextName>logbacktest</contextName> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%msg %n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT" /> </root> </configuration>

我们提供了非常简化的配置文件,在这个配置文件里,把级别为info以上的信息全部在控制台输出,为了测试方便,除了<pattern>部分以外,我们保持所有其他配置不变,每次只更改<pattern>内容。

下面开始具体的实例讲解:

  • n 换行符,不单独举例了
  • m / msg / message,输出和事件关联的消息,这三个关键字m、msg、message表示的意义完全一样,在实际模式中使用哪一个都可以.

示例模式如下

<pattern>%m -- %msg -- %message %n </pattern>

输出信息为:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(3)

  • c{length} /lo{length} /logger{length} 产生日志事件的logger的名称,length为长度,如果长度不够,就先保留名称最右面的部分,

示例模式如下

<pattern>%logger{5} --%logger{35} %m %n </pattern>

输出信息为:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(4)

我们分别把length设置成15和35,可以看到设置成35的,所有的类路径名称都显示了,设置为15的只显示了一部分

  • C{length} /class{length} 产生日志事件调用者的类名,length的用法和上面的类似

示例模式如下

<pattern>%class{20} %m %n </pattern>

输出信息为:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(5)

  • contextName/cn 日志上下文名称,<contextName>部分设置的名称

示例模式如下

<pattern>%contextName %m %n </pattern>

输出信息为:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(6)

  • d{pattern} /date{pattern} /d{pattern, timezone} /date{pattern, timezone} 日志事件时间,可以设置显示的时间格式

示例模式如下

<pattern>%d{yy-MM-dd HH:mm:ss.SSS} %m %n </pattern>

输出信息为:

logger 在代码中如何初始化(Logback配置文件中pattern详细解释及实例)(7)

未完待续

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页