经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
Springboot内外部logback多环境配置详解
来源:jb51  时间:2022/1/18 17:31:18  对本文有异议

一、概述

SpringBoot官方文档
Springboot 默认读取的是项目内的 resources 中 logback 配置文件。
如果 classpath(resources) 下有logback-test.xml会优先生效,并且会和其他logback文件同时生效。
Springboot 默认日志级别是DEBUG,所以在logback初始化之前,会有DEBUG日志输出。

二、项目内外配置

注意:logback-{xxx}.xml不能直接放在resources目录下,否则logback-test.xml会优先生效。

1.application.yml指定 activeprofiles

  1. # Spring配置
  2. spring:
  3. profiles:
  4. active: test

2.activeprofiles指定logback-{xxx}.xml

  1. ########## logback-{xxx}.xml 文件打包在项目内部 ##########
  2. logging:
  3. ? ?config: classpath:logback/logback-test.xml
  4.  
  5. ########## logback-{xxx}.xml 文件打包在项目外部(去掉classpath) ##########
  6. logging:
  7. ? config: /Users/wangfugui/Downloads/logback/logback-test.xml

3.logback-{xxx}.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. ? ? <!--************************** 测试环境 ****************************-->
  4. ? ? <!-- 日志根路径(绝对路径) -->
  5. ? ? <!-- ? ?<property name="log.basePath" value="/Users/wangfugui/Downloads/appname"/>-->
  6. ? ? <!-- 日志根路径(相对路径),如果使用外部 tomcat,则日志会在bin目录,需要加../ -->
  7. ? ? <property name="log.basePath" value="logs-test"/>
  8. ? ? <!-- 日志存放路径 -->
  9. ? ? <property name="log.path" value="/" />
  10. ? ? <!-- 不同的appender,统一日志输出格式 -->
  11. ? ? <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
  12.  
  13. ? ? <!-- 控制台输出 -->
  14. ? ? <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  15. ? ? ? ? <encoder>
  16. ? ? ? ? ? ? <pattern>${log.pattern}</pattern>
  17. ? ? ? ? </encoder>
  18. ? ? </appender>
  19.  
  20. ? ? <!-- INFO日志输出 -->
  21. ? ? <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
  22. ? ? ? ? <file>${log.basePath}/${log.path}/sys-info.log</file>
  23. ? ? ? ? <!-- 循环政策:基于时间创建日志文件 -->
  24. ? ? ? ? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  25. ? ? ? ? ? ? <!-- 日志文件名格式 -->
  26. ? ? ? ? ? ? <fileNamePattern>${log.basePath}/${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
  27. ? ? ? ? ? ? <!-- 日志最大的历史 60天 -->
  28. ? ? ? ? ? ? <maxHistory>60</maxHistory>
  29. ? ? ? ? </rollingPolicy>
  30. ? ? ? ? <encoder>
  31. ? ? ? ? ? ? <pattern>${log.pattern}</pattern>
  32. ? ? ? ? </encoder>
  33. ? ? ? ? <filter class="ch.qos.logback.classic.filter.LevelFilter">
  34. ? ? ? ? ? ? <!-- 过滤的级别 -->
  35. ? ? ? ? ? ? <level>INFO</level>
  36. ? ? ? ? ? ? <!-- 匹配时的操作:接收(记录) -->
  37. ? ? ? ? ? ? <onMatch>ACCEPT</onMatch>
  38. ? ? ? ? ? ? <!-- 不匹配时的操作:拒绝(不记录) -->
  39. ? ? ? ? ? ? <onMismatch>DENY</onMismatch>
  40. ? ? ? ? </filter>
  41. ? ? </appender>
  42.  
  43. ? ? <!-- ERROR日志输出 -->
  44. ? ? <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
  45. ? ? ? ? <file>${log.basePath}/${log.path}/sys-error.log</file>
  46. ? ? ? ? <!-- 循环政策:基于时间创建日志文件 -->
  47. ? ? ? ? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  48. ? ? ? ? ? ? <!-- 日志文件名格式 -->
  49. ? ? ? ? ? ? <fileNamePattern>${log.basePath}/${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
  50. ? ? ? ? ? ? <!-- 日志最大的历史 60天 -->
  51. ? ? ? ? ? ? <maxHistory>60</maxHistory>
  52. ? ? ? ? </rollingPolicy>
  53. ? ? ? ? <encoder>
  54. ? ? ? ? ? ? <pattern>${log.pattern}</pattern>
  55. ? ? ? ? </encoder>
  56. ? ? ? ? <filter class="ch.qos.logback.classic.filter.LevelFilter">
  57. ? ? ? ? ? ? <!-- 过滤的级别 -->
  58. ? ? ? ? ? ? <level>ERROR</level>
  59. ? ? ? ? ? ? <!-- 匹配时的操作:接收(记录) -->
  60. ? ? ? ? ? ? <onMatch>ACCEPT</onMatch>
  61. ? ? ? ? ? ? <!-- 不匹配时的操作:拒绝(不记录) -->
  62. ? ? ? ? ? ? <onMismatch>DENY</onMismatch>
  63. ? ? ? ? </filter>
  64. ? ? </appender>
  65.  
  66. ? ? <!-- 自定义appender:用户访问日志输出 ?-->
  67. ? ? <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
  68. ? ? ? ? <file>${log.basePath}/${log.path}/sys-user.log</file>
  69. ? ? ? ? <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  70. ? ? ? ? ? ? <!-- 按天回滚 daily -->
  71. ? ? ? ? ? ? <fileNamePattern>${log.basePath}/${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
  72. ? ? ? ? ? ? <!-- 日志最大的历史 60天 -->
  73. ? ? ? ? ? ? <maxHistory>60</maxHistory>
  74. ? ? ? ? </rollingPolicy>
  75. ? ? ? ? <encoder>
  76. ? ? ? ? ? ? <pattern>${log.pattern}</pattern>
  77. ? ? ? ? </encoder>
  78. ? ? </appender>
  79.  
  80. ? ? <!-- 自定义appender :日志级别控制 -->
  81. ? ? <logger name="sys-user" level="info">
  82. ? ? ? ? <appender-ref ref="sys-user"/>
  83. ? ? </logger>
  84.  
  85. ? ? <!-- 当前系统全局 :日志级别控制 ?-->
  86. ? ? <logger name="com.example" level="info" />
  87.  
  88. ? ? <!-- 第三方系统:Spring日志级别控制 ?-->
  89. ? ? <logger name="org.springframework" level="warn" />
  90. ? ? <!-- 第三方系统:关闭kafka日志 -->
  91. ? ? <!--<logger name="org.apache.kafka" level="off"/>-->
  92.  
  93. ? ? <!-- 单独指定控制台打印级别 -->
  94. ? ? <root level="info">
  95. ? ? ? ? <appender-ref ref="console" />
  96. ? ? </root>
  97.  
  98. ? ? <!-- 指定上面appender的日志打印级别 -->
  99. ? ? <root level="info">
  100. ? ? ? ? <appender-ref ref="file_info" />
  101. ? ? ? ? <appender-ref ref="file_error" />
  102. ? ? </root>
  103. </configuration>

三、使用自定义appender

使用Lombok
Lombok 内置 @Slf4j 、@Log4j2 两种日志注解。

  1. @Log4j2(topic = "sys-user")
  2. @Slf4j(topic = "sys-user")

不使用Lombok

  1. Logger logger = LoggerFactory.getLogger("sys-user");

四、logback查找配置源码

org.springframework.boot.logging.logback.LogbackLoggingSystem

  1. protected String[] getStandardConfigLocations() {
  2. return new String[]{"logback-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml"};
  3. }

五、案例源码

github : https://github.com/duke147/springboot-logback.git

到此这篇关于Springboot内外部logback多环境配置详解的文章就介绍到这了,更多相关Springboot logback多环境配置内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号