logback-spring.xml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true">
  3. <!-- 日志级别 -->
  4. <property name="log.root.level" value="INFO"/>
  5. <!-- 其他日志级别 -->
  6. <property name="log.other.level" value="DEBUG"/>
  7. <!-- 模块名称, 影响日志配置名,日志文件名 -->
  8. <property name="log.moduleName" value="game"/>
  9. <!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
  10. <property name="log.base" value="${log.dir:-logs}/${log.moduleName}"/>
  11. <!-- 日志文件大小,超过这个大小将被压缩 -->
  12. <property name="log.max.size" value="100MB"/>
  13. <!-- 彩色日志 -->
  14. <property name="log.pattern"
  15. value="%d{HH:mm:ss} %green([%thread]) %highlight(%-5level) %cyan(%logger{50}) %green(\(%file:%line\)) - %msg%n"/>
  16. <!--控制台输出 -->
  17. <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
  18. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  19. <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
  20. <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}) - %highlight(%msg) %n</pattern>-->
  21. <pattern>${log.pattern}</pattern>
  22. <charset>utf8</charset>
  23. </encoder>
  24. </appender>
  25. <!-- 用来保存输出所有级别的日志 -->
  26. <appender name="file.all" class="ch.qos.logback.core.rolling.RollingFileAppender">
  27. <File>${log.base}/${log.moduleName}.log</File><!-- 设置日志不超过${log.max.size}时的保存路径,注意如果
  28. 是web项目会保存到Tomcat的bin目录 下 -->
  29. <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。 -->
  30. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  31. <FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
  32. <!-- 文件输出日志 (文件大小策略进行文件输出,超过指定大小对文件备份) -->
  33. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  34. <maxFileSize>${log.max.size}</maxFileSize>
  35. </timeBasedFileNamingAndTriggeringPolicy>
  36. </rollingPolicy>
  37. <!-- 日志输出的文件的格式 -->
  38. <layout class="ch.qos.logback.classic.PatternLayout">
  39. <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{80}.%method:%L -%msg%n</pattern>
  40. </layout>
  41. </appender>
  42. <!-- 这也是用来保存输出所有级别的日志 -->
  43. <appender name="file.all.other" class="ch.qos.logback.core.rolling.RollingFileAppender">
  44. <File>${log.base}/${log.moduleName}_other.log</File>
  45. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  46. <FileNamePattern>${log.base}/archive/${log.moduleName}_other_%d{yyyy-MM-dd}.%i.log.zip
  47. </FileNamePattern>
  48. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  49. <maxFileSize>${log.max.size}</maxFileSize>
  50. </timeBasedFileNamingAndTriggeringPolicy>
  51. </rollingPolicy>
  52. <layout class="ch.qos.logback.classic.PatternLayout">
  53. <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L -%msg%n</pattern>
  54. </layout>
  55. </appender>
  56. <!-- 只用保存输出error级别的日志 -->
  57. <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  58. <File>${log.base}/${log.moduleName}_err.log</File>
  59. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  60. <FileNamePattern>${log.base}/archive/${log.moduleName}_err_%d{yyyy-MM-dd}.%i.log.zip
  61. </FileNamePattern>
  62. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  63. <maxFileSize>${log.max.size}</maxFileSize>
  64. </timeBasedFileNamingAndTriggeringPolicy>
  65. </rollingPolicy>
  66. <layout class="ch.qos.logback.classic.PatternLayout">
  67. <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L - %msg%n</pattern>
  68. </layout>
  69. <!-- 下面为配置只输出error级别的日志 -->
  70. <filter class="ch.qos.logback.classic.filter.LevelFilter">
  71. <level>ERROR</level>
  72. <onMatch>ACCEPT</onMatch>
  73. <onMismatch>DENY</onMismatch>
  74. </filter>
  75. </appender>
  76. <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
  77. <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
  78. <!-- 添加附加的appender,最多只能添加一个 -->
  79. <appender name="file.async" class="ch.qos.logback.classic.AsyncAppender">
  80. <discardingThreshold>0</discardingThreshold>
  81. <queueSize>256</queueSize>
  82. <includeCallerData>true</includeCallerData>
  83. <appender-ref ref="file.all"/>
  84. </appender>
  85.   <!-- 使用异步来记录其他信息-->
  86. <appender name="file.async.other" class="ch.qos.logback.classic.AsyncAppender">
  87. <discardingThreshold>0</discardingThreshold>
  88. <queueSize>256</queueSize>
  89. <includeCallerData>true</includeCallerData>
  90. <appender-ref ref="file.all.other"/>
  91. </appender>
  92. <!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName -->
  93. <logger name="com.iohao" additivity="false">
  94. <level value="${log.root.level}"/>
  95. <appender-ref ref="stdout"/>
  96. <appender-ref ref="file.async"/><!-- 即com.iohao.game包下级别为 ${log.root.level}的才会使用file.async来打印 -->
  97. <appender-ref ref="file.error"/>
  98. </logger>
  99. <!-- root将级别为${log.root.level}及大于${log.root.level}的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console,其它同理 -->
  100. <root level="${log.root.level}">
  101. <appender-ref ref="stdout"/> <!-- 标识这个appender将会添加到这个logger -->
  102. <appender-ref ref="file.async.other"/>
  103. <appender-ref ref="file.error"/>
  104. </root>
  105. </configuration>