两种配置方式

  • application.properties或 application.yml (系统层面)
  • logback-spring.xml(自定义文件方式)

第一种方式比较简单,可做的事情也比较简单,比如:只能配置日志文件的输出路径、日志文件的格式、日志的级别等

第二种方式比较复杂,对日志的处理比较好,生产上推荐这种,运行维护好。如有以下需求:

  1. 区分 debug、info、error 等类型的日志,并分别输出到不同的日志文件。
  2. 对日志文件进行维护,如每天产生一个日志文件,并设置日志文件的大小和保留天数等。

方式一:application.properties或 application.yml

#日志级别 trace<debug<info<warn<error<fatal,默认级别为info,即默认打印info及其以上级别的日志
#logging.level设置日志级别,后面跟生效的区域,比如root表示整个项目,也可以设置为某个包下,也可以具体到某个类名(日志级别的值不区分大小写)
#logging.level.root=info就是默认的情况
logging:pattern:  #配置日志输出格式
#    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %clr(%-5level){green} %clr(${PID:- }){magenta} [ %clr(%thread){red}] --- %clr(%logger{36}){blue} : %msg%n"  #配置控制台的日志输出的格式,默认输出格式file: "%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n"  #配置控制台的日志输出的格式#    日志输出格式:#      %d表示日期时间,#      %thread表示线程名,#      %-5level:级别从左显示5个字符宽度#      %logger{50} 表示logger名字最长50个字符,否则按照句点分割。#      %msg:日志消息,#      %n是换行符#      %clr(对项){颜色名} 配置该项的颜色  #只在控制台有作用#      ${PID:- }  进程号#      %d{yyyy-MM-dd HH:mm:ss.SSS} %clr(%-5level){green} %clr(${PID:- }){magenta} [ %clr(%thread){red}] --- %clr(%logger{36}){blue} : %msg%n  #系统默认配置file:   #配置日志输出的文件#这两个选一个配置就可以了,一起配置的话,name的生效。系统每次启动都会在原来的日志文件上追加数据
#    name: F:/ideaWorkSpace/spring-boot.logpath: F:/ideaWorkSpace/log/   #会在log目录下生成一个spring.log的日志文件,相对路径为项目目录下level:  # 配置输出日志级别root: INFO  #设置整个项目的日志输出级别默认infocom.bs.agricultural_share_platform.dao: DEBUG  # 设置该包下的日志输出级别为 DEBUG,输出执行的sql


该方式,日志都写在一个文件里面,不方便维护。

方式二:logback-spring.xml文件配置

在resources目录下添加logback-spring.xml配置文件

配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="true"><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /><conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /><!-- 定义属性 --><!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --><property name="log.path" value="F:/ideaWorkSpace/log" /><!-- 彩色日志格式 --><!-- 控制台日志输出--><property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex"/>
<!--    <property name="CONSOLE_LOG_PATTERN" value="[%date{yyyy-MM-dd HH:mm:ss.SSS}][%-4level][%line][%thread] reqLog:[%X{reqLog}] call:[%logger][%method] parameter:%msg%n"/>--><!-- 日志文件日志输出--><property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%t] %-40.40logger{39} : %m%n%wex"/><!--多环境的日志输出--><!--根据不同环境(prd:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,--><!--在 logback-spring.xml中使用 springProfile 节点来定义,方法如下:--><springProfile name="prd"><property name="LOG_HOME" value="F:/ideaWorkSpace/log" /></springProfile><springProfile name="test"><property name="LOG_HOME" value="F:/ideaWorkSpace/log" /></springProfile><springProfile name="dev"><property name="LOG_HOME" value="F:/ideaWorkSpace/log" />
<!--        <logger name="com.bs.agricultural_share_platform.dao" level="debug"/>--></springProfile><!--<logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>。<logger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。name:用来指定受此logger约束的某一个包或者具体的某一个类。level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前logger将会继承上级的级别。addtivity:是否向上级logger传递打印信息。默认是true。--><!--使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:--><!--root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG可以包含零个或多个元素,标识这个appender将会添加到这个logger。--><!--输出到控制台--><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!--            设置debug,在控制台输出执行的sql--><level>debug</level></filter><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder></appender><!--debug 级别的日志--><!-- 按照每天生成日志文件 --><appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名,正在的 --><file>${log.path}/log_debug.log</file><!-- 设置此日志文件只记录debug级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><!--日志文件输出格式--><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>UTF-8</charset></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!--info 级别的日志--><!-- 按照每天生成日志文件 --><appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名,正在的 --><file>${log.path}/log_info.log</file><!-- 设置此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><!--日志文件输出格式--><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder><!-- 日志记录器的滚动策略,按日期,按大小记录 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!--WARN 级别的日志--><appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名,正在的 --><file>${log.path}/log_warn.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/warn.%d{yyyy-MM-dd}.log</fileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy></appender><!--ERROR 级别的日志--><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名,正在的 --><file>${log.path}/log_error.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><encoder><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf8</charset></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log</fileNamePattern><MaxHistory>30</MaxHistory></rollingPolicy></appender><!-- 系统日志输出级别 ,ref 的名字对应上面appender标签的name名称--><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/><appender-ref ref="DEBUG"/></root>
</configuration>

Springboot会在目录下自动生成对应类型的日志文件:

其它问题

  1. 有些人配置文件里面有看到 layout(如下例子),不要慌,因为encoder 和 layout 在作用上没有本质区别,但是自0.9.19版本之后,极力推荐使用encoder。
  2. 为什么Spring Boot推荐使用logback-spring.xml来替代logback.xml来配置logback日志的问题分析?
    原因是:logback.xml加载早于application.properties,所以如果你在logback.xml使用了变量时,而恰好这个变量是写在application.properties时,那么就会获取不到,只要改成logback-spring.xml就可以解决。

拓展:使用Slf4j输出日志

  1. 添加依赖
<!-- Slf4j日志--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency>
  1. Idea添加lombok插件

  2. 添加注解并使用

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan(basePackages = "com.bs.agricultural_share_platform.dao")
@Slf4j
public class AgriculturalSharePlatformApplication {public static void main(String[] args) {log.info("启动项目了");SpringApplication.run(AgriculturalSharePlatformApplication.class, args);}
}


参考:
https://my.oschina.net/360yg/blog/1810625
https://www.cnblogs.com/zhangjianbing/p/8992897.html

Springboot日志框架Logback的使用及配置相关推荐

  1. Java日志框架-logback的介绍及配置使用方法(纯Java工程)

    说明:内容估计有些旧,2011年的,但是大体意思应该没多大变化,最新的配置可以参考官方文档. 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分 ...

  2. Java日志框架——Logback

    Java日志框架--Logback 简介 1.1 Logback概述 1.2 日志级别 1.3 组件 1.4 配置文件 1.5 日志输出格式 项目中应用步骤 2.1 依赖 2.2 日志输出到控制台 2 ...

  3. 【spring boot】8.spring boot的日志框架logback使用

    在继续上一篇的Debug调试之后,把spring boot的日志框架使用情况逐步蚕食. 参考:http://tengj.top/2017/04/05/springbo 开篇之前,贴上完整applica ...

  4. 【笑小枫的SpringBoot系列】【六】SpringBoot日志打印Logback详解

    什么是Logback Logback 旨在作为流行的 log4j 项目的继承者,是SpringBoot内置的日志处理框架,spring-boot-starter其中包含了spring-boot-sta ...

  5. springboot(2.2.4)的默认日志框架logback换成log4j2

    阿里https://github.com/alibaba/druid/的文档,druid经过阿里购物节的大数据量的考验,又标榜druid是带有监控的数据库连接池,可以时刻监测数据路访问的性能,并发,连 ...

  6. SpringBoot和日志框架:缘由,日志框架的选择,使用,自定义配置,日志框架切换

    日志框架 缘由 如果像我们初学者,想知道代码运行到哪里了,一般都是会System.out.println() 进行输出到控制台查看代码运行的情况,好知道代码错误在哪里 但是大型的系统里面,如果有很多的 ...

  7. SpringBoot日志框架篇

    在项目的开发中,日志是必不可少的一个记录事件的组件,所以也会相应的在项目中实现和构建我们所需要的日志框架. 而市面上常见的日志框架有很多,比如:JCL.SLF4J.Jboss-logging.jUL. ...

  8. Springboot [日志管理LogBack]

    Spring Boot的日志详解 日志框架的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logb ...

  9. 服务器日志文件中包含堆栈跟踪,日志框架 Logback 官方手册(第三章:Configuration)...

    以下内容翻译整理自logback官方手册,地址:logback官方手册 logback 配置 将日志请求插入应用程序代码需要相当多的计划和工作.观察表明,大约有4%的代码用于日志记录.因此,即使是一个 ...

最新文章

  1. 维基链(WICC)当前币值应该还远远没有达到它本身应有的高度
  2. Python实现固定效应回归模型实现因果关系推断
  3. 微信公众平台开发(58)自定义菜单
  4. ubuntu 设置开机启动与关闭开机启动(适用于部分linux系统)
  5. 细品慢酌QuickTest关键视图(5)脚本调试
  6. 量子运算 简单通俗例子_什么是量子计算机? 用一个简单的例子解释。
  7. leetcode - 638. 大礼包
  8. 分库分表学习总结(4)——分布式事务常见应用场景总结
  9. 用 FragmentManager 替换时使用 GoogleMaps 崩溃 app
  10. 华为网络设备-生成树协议配置
  11. 从多种模型中选择最合适的模型,用于行人检测
  12. 如何解决上班下午3:00发困的事情
  13. Android四大组件之一服务(Service)
  14. JAVA编程---------英雄对战游戏
  15. SpringBoot中@Value读取不到值的解决方案
  16. ABB机器人基本知识。
  17. 短视频运营:如何提高自己的剪辑技巧?
  18. 2023年云计算的发展趋势如何?还值得学习就业吗?
  19. centos7分区、挂载、磁盘合并
  20. PS学习-人像照片综合处理(四)--通道磨皮

热门文章

  1. [BZOJ1150][CTSC2007]数据备份Backup
  2. vue中 生成二维码 并自动批量下载
  3. QML ListView实现多选操作
  4. SUSE Linux11安装教程(图文详解)
  5. 计算机视觉期刊投稿网址-一般创新点
  6. java eav模式_实体属性值模式(EAV 模式)
  7. C#5.0 In A NutShell翻译勘误
  8. spring security 前后端分离 进行用户验证 权限登陆的实现代码(看不懂??直接cv)
  9. 杭电oj2002c语言,杭电oj部分水 c语言源代码.doc
  10. select max(sort) 查询出来的最大数是9