背景
在编写logback.xml文件的时候,pattern元素中,用到了很多占位符,有的不太清楚是什么意思,于是,查询了下 做个总结
常见的 pattern 占位符
以下是一些常用的占位符及其含义:
| 占位符 | 含义 |
|---|---|
%d | 日志记录的时间戳,默认格式为 yyyy-MM-dd HH:mm:ss,SSS,可以通过 {format} 指定自定义格式。 |
%level | 日志级别(如 DEBUG、INFO、WARN、ERROR)。 |
%thread | 线程名称,等同于 %t。 |
%logger | 日志记录器的名称,可以使用 {length} 限制显示长度,例如 %logger{36}。 |
%msg | 日志消息,等同于 %m。 |
%n | 换行符。 |
%class | 记录日志的类名。 |
%method | 记录日志的方法名。 |
%file | 记录日志的文件名。 |
%line | 记录日志的行号。 |
%X{key} | MDC(Mapped Diagnostic Context)中的键值对,用于存储和检索上下文信息。 |
logback 中 <pattern> 的含义
在 logback 配置文件中,<encoder> 元素用于定义日志输出的格式,而 <pattern> 子元素则指定了具体的日志输出模式。<pattern> 使用占位符(Placeholders)来表示不同的日志信息字段,这些占位符会被实际的日志数据替换。
举例:
<pattern>%date{HH:mm:ss} [%t] %logger - %m%n</pattern>
详解:
1. %date{HH:mm:ss}:日期和时间
- 含义:表示日志记录的时间戳,格式为
HH:mm:ss,即小时、分钟和秒。 HH:24 小时制的小时(00-23)。mm:分钟(00-59)。ss:秒(00-59)。{HH:mm:ss}:指定时间的格式。你可以根据需要调整格式,例如:%date{yyyy-MM-dd HH:mm:ss}:完整的日期和时间。%date{HH:mm:ss.SSS}:包含毫秒的时间。
2. [%t]:线程名称
- 含义:表示记录日志时所在的线程名称,用方括号
[]包围。 %t:线程名称的占位符。- 示例:如果日志是在
main线程中记录的,输出将会是[main];如果是在pool-1-thread-2线程中记录的,输出将会是[pool-1-thread-2]。
3. %logger:日志记录器的名称
- 含义:表示记录日志的
Logger对象的名称。通常是你在代码中使用LoggerFactory.getLogger()方法传入的类名或自定义名称。 %logger:日志记录器名称的占位符。- 示例:如果你使用
LoggerFactory.getLogger(MyClass.class),那么输出将会是MyClass。
4. %m:日志消息
- 含义:表示实际的日志消息内容,即你在代码中通过
logger.info()、logger.debug()等方法传递的消息字符串。 %m:日志消息的占位符。- 示例:如果你调用
logger.info("This is a log message"),那么输出将会是This is a log message。
5. %n:换行符
- 含义:表示换行符,确保每条日志记录都从新的一行开始。
%n:换行符的占位符。它会根据操作系统的不同自动选择合适的换行符(例如,在 Windows 上是\r\n,在 Unix/Linux 上是\n)。
完整的 pattern 解释
<pattern>%date{HH:mm:ss} [%t] %logger - %m%n</pattern>
将生成类似以下的日志输出:
14:35:42 [main] com.example.MyClass - This is a log message
14:35:42:记录日志的时间,格式为小时、分钟和秒。[main]:记录日志的线程名称。com.example.MyClass:记录日志的Logger名称。This is a log message:实际的日志消息。- 换行符:确保每条日志记录都从新的一行开始。
示例:更复杂的 pattern
你可以根据需要调整 pattern,以包含更多的日志信息。例如,添加日志级别和文件名/行号:
<pattern>%date{HH:mm:ss} [%thread] %-5level %logger{36} - %msg (%file:%line)%n</pattern>
这将生成类似以下的日志输出:
14:35:42 [main] INFO com.example.MyClass - This is a log message (MyClass.java:42)
%-5level:日志级别,宽度为 5 个字符,左对齐。如果没有 5 个字符,右边会补空格。%file:%line:记录日志的文件名和行号。
总结
<pattern>是logback中用于定义日志输出格式的关键配置项。- 你可以使用各种占位符来控制日志输出的内容,常见的占位符包括
%date、%thread、%logger、%msg和%n。 - 通过合理配置
pattern,你可以生成符合项目需求的日志格式,便于调试和分析。