云记
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
  • 前端技术

    • JavaScript基础知识
    • 其他
    • 正则表达式
    • Favicon
  • 后端技术

    • 数据结构
    • 开发规范
    • 路径匹配规则
    • Java字符串
    • 二维码的生成与读取
    • 雪花算法
    • SpringBoot注解
    • SpringBoot自定义banner
    • SpringBoot日志
    • Util、POJO、domain、entity、model、dao、view、mapper、service、controller的作用和区别分析
    • SpringSecurity
  • 数据库

    • MySQL
    • Oracle
  • 面试

    • Java面试

日志记录Logback

Layout描述

  • %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %m%n
  • %d{yyyy-MM-dd HH:mm:ss.SSS}:表示该条日志记录的时间
  • %thread:表示线程名
  • %-5level:级别从左显示5个字符宽度
  • %logger{50}:表示该条日志所属类的全名
  • %m:也可以写作%msg,表示这条日志的内容
  • %n:表示换行
  1. %logger{length}、%c{length}、%lo{length}:在日志事件的源点输出 logger 的名称,比如:
  • LoggerFactory.getLogger(TestMain.class),此时%logger的值为“com.xxx.TestMain”
  • LoggerFactory.getLogger("FILE-LOGGER"),此时其值为“FILE-LOGGER”

其中{length}为可选项,length值为数字类型(>=0),在不丢失含义的情况下来限定logger名字的长度(缩短);在指定length情况下,将会直接返回“.”字符最右端的子字符串。如下为示例:

配置logger名结果
%loggermainPackage.sub.sample.BarmainPackage.sub.sample.Bar
%logger{0}mainPackage.sub.sample.BarBar
%logger{5}mainPackage.sub.sample.Barm.s.s.Bar
%logger{10}mainPackage.sub.sample.Barm.s.s.Bar
%logger{15}mainPackage.sub.sample.Barm.s.sample.Bar
%logger{16}mainPackage.sub.sample.Barm.sub.sample.Bar
%logger{26}mainPackage.sub.sample.BarmainPackage.sub.sample.Bar

由此可见,无论length如何设置,“Bar” 总会完整输出;当length过小时,将会根据“.”分割且只输出缩写;根据length的情况,从最右端开始逐级补全。为了易读,我们尽可能使用%logger输出全名。

  1. %C{length}、%class{length}:输出发生日志事件的调用类的全限定名。与 %logger 类似,{length}可选项来限定类名的长度,适度进行缩写。
  2. %d{pattern}、%date{pattern}、%d{pattern,timezone}、%date{pattern,timezone}:输出日志事件的时间;{pattern}为可选项,用于声明时间的格式,比如%d{yyyy-MM-dd HH:mm:ss},pattern必须为“java.text.SimpleDateFormat”类可兼容的格式。
  3. %F、%file:输出发生日志请求的java源文件名,产生文件名信息不是特别的快,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(比如输出:TestMain.java,默认异常栈中会输出类名)
  4. %caller{depth}、%caller{depthStart..depthEnd}:输出产生日志事件的调用者位置信息,{depth}为可选项;位置信息依赖于JVM实现,不过通常会包含调用方法的全限定名、文件名和行号。假如:TestMain.java中main()-->test1()-->test2(),在test2方法中触发日志事件,假如%caller{3}将会输出:
  • Caller+0 at com.test.demo.TestMain2.test2(TestMain2.java:26)
  • Caller+1 at com.test.demo.TestMain2.test1(TestMain2.java:18)
  • Caller+2 at com.test.demo.TestMain2.main(TestMain2.java:14) 这个配置项,对我们排查问题非常有用。不过在exception时,异常栈中已经包含了全部的追踪栈。
  1. %L、%line:输出发生日志请求的源文件行号,产生行号信息不是非常的快速,有一定的性能损耗,除非对执行速度不敏感否则应该避免使用此选项。(默认异常栈中会输出行号)
  2. %m、%msg、%message:在日志中输出应用提供的message。比如:LOGGER.error("message",exception),输出“message”和exception栈。
  3. %M、%method:输出发出日志记录请求的方法名称,产生方法名不是特别快速。
  4. %n:输出一个行分隔符,即换行符。(取决于运行平台,可能是“\n”,"\r\n")
  5. %p、%le、%level:输出日志事件的level。
  6. %t、%thread:输出产生日志事件的线程名称。
  7. %ex{depth}、%exception{depth}:输出日志事件相关的异常栈,默认会输出异常的全跟踪栈。(%m会包含此部分)
  8. %nopex:输出日志数据,但是忽略 exception。
最后更新时间:
贡献者: xiaozhe
上一篇
SpringBoot自定义banner
下一篇
Util、POJO、domain、entity、model、dao、view、mapper、service、controller的作用和区别分析