logback的patternlayout通过转换词灵活定制日志格式:%d控制时间、%t或%thread输出线程名、%c或%logger显示类名;常用组合如%d{hh:mm:ss.sss} [%t] %level [%c{1}] %m%n,需注意对齐、大小写及避免误用%c。

Logback 的 PatternLayout 是最常用的日志格式化器,通过配置 pattern 字符串就能灵活控制每条日志的输出内容。要包含时间、线程名、类名,关键在于选用正确的转换词(conversion word)并合理组织顺序。
核心转换词说明
以下是最常用于自定义格式的几个转换词,直接对应你关心的信息:
-
%d:日期时间,默认格式为 ISO8601(如
2024-05-20 14:23:15.123),可指定格式,例如%d{yyyy-MM-dd HH:mm:ss.SSS} -
%t 或 %thread:当前线程名(如
main、http-nio-8080-exec-1) -
%c 或 %logger:日志记录器的全限定类名(如
com.example.service.UserService);加参数可截取,例如%c{1}只显示最末一级(UserService) -
%M:方法名(需开启
includeCallerData="true",但会降低性能,一般不推荐用于生产) - %m:实际日志消息内容
- %level:日志级别(INFO、ERROR 等)
- %n:换行符(平台无关)
logback.xml 中配置示例
在 logback.xml 的 <appender></appender> 内配置 PatternLayout:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %c{1} - %m%n</pattern></encoder></appender>
这条 pattern 输出效果类似:
14:23:15.123 [main] INFO UserService - 用户登录成功常用格式组合建议
根据使用场景,可参考这些实用搭配:
-
简洁开发调试版:
%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %level [%c{1}] %m%n -
带包路径的生产版:
%d{ISO8601} [%thread] %-5level %logger{36} - %m%n({36}表示最多保留 36 个字符,自动省略包前缀) -
对齐易读版:
%d{HH:mm:ss.SSS} [%-15thread] %-5level %-35logger{35} - %m%n(用-15左对齐、固定宽度提升可读性)
注意事项
几点容易忽略但影响实际效果的细节:
- pattern 中的空格、中括号、连字符等普通字符会原样输出,用于分隔不同字段
-
%-5level中的负号表示左对齐,数字 5 表示最小宽度(如 ERROR 占 5 字符,INFO 补空格) - 如果日志输出看不到类名,检查是否用了
%c而不是%C(%C是调用类,开销大且不准,应避免) - 时间格式中的大写
SSS表示毫秒,小写sss是“秒内的千分之一”,通常用大写
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










