SpringBoot 日志配置(logback)

SpringBoot支持Java Util Logging,Log4J,Log4J2和Logback日志框架,默认采用logback日志。在实际SpringBoot项目中使用SpringBoot默认日志配置是不能够满足实际生产及开发需求的,需要选定适合的日志输出框架,灵活调整日志输出级别、日志输出格式等。本章主要讲述如何进行SpringBoot项目的日志详细配置。

(强烈建议使用Logback日志配置,因为它比log4j性能好多很多。)

1、添加日志依赖包

SpringBoot项目中依赖包spring-boot-starter中已经包含spring-boot-starter-logging,该依赖包就是默认的logback日志框架,则不需额外引入。

2、添加logback.xml

在/springboot/src/main/resources目录下,新建日志配置文件logback.xml,如下:

(配置说明见注释)

  1. <?xml version="1.0" encoding="UTF-8" ?>

  2. <!--

  3. scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true

  4. scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位默认单位是毫秒,当scan为true时此属性生效,默认时间间隔为1分钟

  5. debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false

  6. -->

  7. <configuration scan="true" scanPeriod="2 seconds">

  8. <!--

  9. 定义滚动记录文件appender 作用:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件

  10. RollingFileAppender class="ch.qos.logback.core.rolling.RollingFileAppender"

  11. 参数:

  12. <append>:如果是true日志被追加到文件结尾,如果是false清空现存文件,默认是true

  13. <file>:被写入的文件名,可以是相对目录也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值

  14. <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名

  15. <triggeringPolicy>:告知RollingFileAppender合适激活滚动

  16. <prudent>:当为true时不支持FixedWindowRollingPolicy支持TimeBasedRollingPolicy,但是有两个限制:1不支持也不允许文件压缩,2不能设置file属性必须留空

  17. -->

  18. <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">

  19. <!-- 如果是true,日志被追加到文件结尾,如果是false,清空现存文件.默认是true -->

  20. <prudent>true</prudent>

  21. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  22. <!-- 每天滚动一次的日志 只保留30天内的日志文件 -->

  23. <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot_%i.log</fileNamePattern>

  24. <maxHistory>30</maxHistory>

  25. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  26. <maxFileSize>10MB</maxFileSize>

  27. </timeBasedFileNamingAndTriggeringPolicy>

  28. </rollingPolicy>

  29. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

  30. <!-- 对日志进行格式化 -->

  31. <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>

  32. <charset>utf-8</charset>

  33. </encoder>

  34. </appender>

  35. <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">

  36. <prudent>true</prudent>

  37. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  38. <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot-error_%i.log</fileNamePattern>

  39. <maxHistory>30</maxHistory>

  40. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  41. <maxFileSize>10MB</maxFileSize>

  42. </timeBasedFileNamingAndTriggeringPolicy>

  43. </rollingPolicy>

  44. <encoder>

  45. <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>

  46. <charset>utf-8</charset>

  47. </encoder>

  48. <!--

  49. 配置日志级别过滤器 作用:根据日志级别进行过滤,如果日志级别等于配置级别过滤器会根据onMath和onMismatch接收或拒绝日志

  50. 参数:

  51. <level>:设置过滤级别

  52. <onMatch>:用于配置符合过滤条件的操作

  53. <onMismatch>:用于配置不符合过滤条件的操作

  54. 此处配置为只接收ERROR日志级别信息

  55. -->

  56. <filter class="ch.qos.logback.classic.filter.LevelFilter">

  57. <level>ERROR</level>

  58. <onMatch>ACCEPT</onMatch>

  59. <onMismatch>DENY</onMismatch>

  60. </filter>

  61. </appender>

  62.     <!-- 定义控制台appender 作用:把日志输出到控制台 class="ch.qos.logback.core.ConsoleAppender" -->

  63. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">

  64. <layout class="ch.qos.logback.classic.PatternLayout">

  65. <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>

  66. </layout>

  67. </appender>

  68.     <!-- 将root的打印级别设置为"error",指定了名字为"console","fileAppender","errorAppender"的appender -->

  69. <root level="error">

  70. <appender-ref ref="console"/>

  71. <appender-ref ref="fileAppender"/>

  72. <appender-ref ref="errorAppender"/>

  73. </root>

  74. <!--

  75. logger用来设置某一个包的日志打印级别

  76. <loger> 仅有一个name属性,一个可选的level和一个可选的addtivity属性

  77. name:用来指定受此loger约束的某一个包或者具体的某一个类

  78. level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF

  79. addtivity:是否向上级loger传递打印信息。默认是true,会将信息输入到root配置指定的地方,可以包含多个appender-ref,标识这个appender会添加到这个logger

  80. -->

  81. <logger name="com.xcbeyond.springboot" level="debug"/>

  82. </configuration>

3、日志打印。

已项目启动类中输出debug日志为例说明。

  1. package com.xcbeyond.springboot;

  2. import org.slf4j.Logger;

  3. import org.slf4j.LoggerFactory;

  4. import org.springframework.boot.SpringApplication;

  5. import org.springframework.boot.autoconfigure.SpringBootApplication;

  6. /**

  7. * SpringBoot启动类

  8. * @author xcbeyond

  9. * 2018年7月2日下午5:41:45

  10. */

  11. @SpringBootApplication

  12. public class SpringbootApplication {

  13. private static Logger logger = LoggerFactory.getLogger(SpringbootApplication.class);

  14. public static void main(String[] args) {

  15. if(logger.isDebugEnabled()) {

  16. logger.debug("SpringBoot starting...");

  17. }

  18. SpringApplication.run(SpringbootApplication.class, args);

  19. }

  20. }

注:请使用包org.slf4j.Logger、org.slf4j.LoggerFactory。SLF4J只是一个日志标准,并不是日志框架的具体实现,便于后期维护时可以根据不同的日志 框架配置不同类型的日志,而不用修改日志输出代码。

4、启动项目。

在项目的同级目录下会生成logs\2018-07-11\日志文件夹及日志文件。

SpringBoot (14)---日志配置(logback)相关推荐

  1. SpringBoot生成日志文件---logback和log4j

    SpringBoot生成日志文件---logback和log4j 一.logback logback是SpringBoot自带的日志文件,默认会为控制台输出INFO级别的日志,并且不会将日志文件保存. ...

  2. SpringBoot与日志配置

    前言: 前文我们介绍了配置文件的原理还有如果切换配置文件的环境,个人觉得归纳为一手册,要用的时候查一下就好了.不然记那么多挺麻烦的.. 1.日志 1.日志框架 老生常谈,什么是日志:我们平时用Syst ...

  3. springboot 默认日志配置以及更换其他日志配置

    springboot 默认日志配置 最简单的打印Sql日志 方法一 此方法无需改动直接复制即可使用 #打印SQL mybatis.configuration.log-impl=org.apache.i ...

  4. 日志配置logback

    在选择项目日志框架时,发现log4j的作者开发了新的日志框架,据说性能提高不少,那就选它了,不过,除了配置上有点不习惯外,最重要的一点 ,打印线程号这个功能依然没有(打印线程名这个东西是在是个鸡肋). ...

  5. SpringBoot默认日志配置输出级别

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/csdn18740599042 /article/details/109031005 Springboot默认配置 我们在测试类 ...

  6. Spring Boot 日志配置 ——logback

    一.logback默认的日志配置 Spring Boot 默认使用的日志框架是logback,如果我们没有自定义配置的话,logback将会使用他为默认的日志配置文件: classpath:logba ...

  7. springboot默认日志配置及程序启动脚本

    前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Sp ...

  8. SpringBoot打印日志配置,打印出默认控制台一样的日志格式。

    1.问题描述 如何打印出和SpringBoot默认日志格式一样的日志?根据网上的日志配置,日志是打印出来了没问题.但效果是这样的.

  9. springboot 2.0 配置 logback

    springboot2.0默认已经引入日志jar依赖,所以直接配置日志信息就可以了. 在application.properties中加入: logging.config=classpath:logb ...

最新文章

  1. [JAVA EE]Spring Boot 控制层:参数传递方法
  2. winform运行时如何接受参数?(示例)
  3. lua学习笔记之io
  4. 如何打通高薪的黄金通道 成为职场金领
  5. centos7已有数据硬盘挂载_CentOS7如何添加硬盘和挂载硬盘
  6. HIbernate的检索方式
  7. Elasticsearch系列「二」如何物理删除给定期限的历史数据?
  8. python爬虫爬取ip记录网站信息并存入数据库
  9. IOS设置导航栏返回按钮,并添加事件返回主页面
  10. apache derby_Apache Derby数据库用户和权限
  11. 30岁学python全栈_知乎热帖!戳痛100万程序员:我30岁了,我还能学Python吗?
  12. 03-centos 如何查看操作系统是哪个版本
  13. execute与executeUpdate的区别
  14. c语言文件归档,Go语言tar归档文件的读写操作
  15. 淘口令流量属于淘宝什么流量来源 如何用淘口令来刷流量
  16. luogu P1375 小猫
  17. win7安装硬盘后无法启动计算机,win7系统安装固态硬盘开启AHCi后开不了机的图文教程...
  18. LC152---乘积最大子数组
  19. NDB Cluster 基本介绍
  20. 大数据行业前景如何?就业岗位有哪些?

热门文章

  1. 鸿蒙系统存储空间,鸿蒙系统即将上线!看到内存要求后,网友:逼我换手机?...
  2. 数字图像处理(作业三)——孔洞填充+全局阈值+自适应阈值
  3. 【前端】第三章 Vue
  4. Java集合之List的equals方法
  5. 如果对象的引用被置为null,;垃圾回收器是否会立即释放对象占用的内存?
  6. SQL查询优化 LEFT JOIN和INNER JOIN
  7. MonkeyRunner之小白如何使用MonkeyRecorder录制回放脚本
  8. Android 的Android Device Monitor 打不开出现 A error has occured
  9. Linux下安装memcache以及扩展
  10. java锁的膨胀过程和优化