SpringBoot日志框架LogBack
logback记录器的属性
依赖
SpringBoot天生集成了logback日志框架,因此想要输出日志,根本不用再引入多余的依赖
日志文件说明
appender-为日志输出目的地,log4提供的appender有以下几种
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
layout–日志输出格式,log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
打印参数--Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:[%d{yyyy-MM-dd HH:mm:ss}]
%c 输出所属的类目,通常就是所在类的全名
%M 输出方法名
%L 输出在哪一行
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%L 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:
Testlog4.main(TestLog4.java: 10 )
%m 输出代码中指定的消息
%r 输出自应用启动到输出该log信息耗费的毫秒数
例如这样写,信息一目了然
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
</layout>
配置文件参考
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--控制台日志附加器,日志输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
</layout>
</appender>
<!--文件日志附加器,日志输出到唯一的一个日志文件中(生产环境基本不会用)-->
<appender name="tofile" class="ch.qos.logback.core.FileAppender">
<!--日志输出的格式-->
<encoder>
<pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
</encoder>
<!--日志输出路径-->
<file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider_onlyOne.log</file>
<!--追加写,为false时会覆盖以前的日志-->
<append>true</append>
</appender>
<!--按照时间维度对日志进行分割,但是对单个文件大小没有限制-->
<appender name="rollFileByTime" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志输出的格式-->
<encoder>
<pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
</encoder>
<!--当天日志输出路劲-->
<file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-bytime.log</file>
<!--日志滚动策略:每天生成一个用于归档-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--归档日志文件名字格式-->
<fileNamePattern>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-bytime_%d{yyyy-MM-dd_HH-mm}.log
</fileNamePattern>
<!--归档日志文件滚动保存最近maxHistory个的日志-->
<maxHistory>7</maxHistory>
<!--所有日志文件最大上限,超过则删除时间最久远的日志文件-->
<totalSizeCap>5GB</totalSizeCap>
</rollingPolicy>
</appender>
<!--按照时间维度对日志进行分割,对单个文件大小有限制,超过则自动分割-->
<appender name="rollFileByTimeAndSize" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志输出的格式-->
<encoder>
<pattern>日志级别:【%p】 时间:【%d{yyyy-MM-dd HH:mm:ss}】 全类名:【%c 方法:%M 行数:%L】 输出信息:%m %n</pattern>
</encoder>
<!--当天日志输出路劲-->
<file>C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-byTimeAndSize.log</file>
<!--日志滚动策略:每天生成一个用于归档-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--归档日志文件名字格式-->
<fileNamePattern>
C:\code\springCloudAlibabaDemo\nacos-provider\logs\nacos-provider-byTimeAndSize_%d{yyyy-MM-dd_HH-mm}.%i.log
</fileNamePattern>
<!--归档日志文件滚动保存最近maxHistory个的日志-->
<maxHistory>7</maxHistory>
<!--所有日志文件最大上限,超过则删除时间最久远的日志文件-->
<totalSizeCap>5GB</totalSizeCap>
<!--单个日志文件最大限制-->
<maxFileSize>50MB</maxFileSize>
</rollingPolicy>
</appender>
<!-- 根日志 -->
<root level="info">
<!--开发环境使用-->
<appender-ref ref="console"/>
<!--生产环境使用,日志量较少-->
<!--<appender-ref ref="rollFileByTime"/>-->
<!--生产环境使用:日志量较大-->
<!--<appender-ref ref="rollFileByTimeAndSize"/>-->
</root>
</configuration>