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>内容。

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

示例模式如下

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

输出信息为:

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

示例模式如下

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

输出信息为:

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

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

示例模式如下

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

输出信息为:

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

示例模式如下

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

输出信息为:

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

示例模式如下

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

输出信息为:

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

未完待续

,