SpringBoot中⾃带⽇志logback的配置[配置模板]
1. 简单配置
如果只是简单的记录⽇志,想把⽇志记录到⽂件中,在application.properties中简单配置
# 设置整个项⽬的代码调试级别是debug
p.jarvaniv=debug
logging.file.name=D:/project/forum/NowCoderBBS/log/community.log
top.jarvaniv是我项⽬的包名。
第⼀个配置:项⽬⽇志中显⽰debug以上级别的⽇志。
第⼆个配置:⽇志⽂件的路径和⽂件名。详情看这篇博客:
额外科普:⽇志级别
2. 详细配置
项⽬开发中,⽇志不会都存放在同⼀⽂件中,需要按照⽇志级别等分类,单个⽇志⽂件不能过⼤,这些都可以通过配置⽂件⾃定义。
SpringBoot项⽬中创建l⽂件,放在项⽬的resources⽬录下,SpringBoot就会⾃动识别并且应⽤。这个是约定,不⽤这个⽂件名不会被识别。
模板代码:
不懂的地⽅在代码⾥有注释
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>NowCoderBBS</contextName><!-- 项⽬名 -->
<property name="LOG_PATH"value="D:/project/forum/NowCoderBBS"/><!-- ⽇志存放⽬录 -->
<property name="APPDIR"value="log"/><!-- 项⽬⽬录,⽇志存放⽬录可能存放多个项⽬ -->
<!-- error file 配置error级别相关的⽇志 -->
<appender name="FILE_ERROR"class="ch.olling.RollingFileAppender">
<file>${LOG_PATH}/${APPDIR}/log_error.log</file><!-- error⽇志⽬录路径+⽇志⽂件名 -->
<!-- ⽂件存放策略,如果⼀个⽂件存放不下,怎么创建新的⽂件 -->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<!--⽇志⽂件的命名⽅式:%d:⽇期,⽇期格式;%i是变量,1、2、3等-->
<fileNamePattern>${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP">
<maxFileSize>5MB</maxFileSize><!-- 单个⽇志⽂件⼤⼩上限,⼤⼩到5MB后创建新⽇志⽂件存储 -->
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory><!-- ⽇志⽂件最多存储多久,单位:天 -->
</rollingPolicy>
<append>true</append><!-- 以追加的⽅式存储,⽽不是覆盖 -->
<encoder class="ch.qos.der.PatternLayoutEncoder">
<!-- ⽇志记录格式:⽇期级别哪个线程哪个类哪个⽂件哪⼀⾏具体⽇期信息换⾏ -->
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>马明东简介闫学晶老公
<charset>utf-8</charset><!-- 编码⽅式 -->
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 过滤器 -->
<level>error</level><!-- 筛选error级别的⽇志 -->
<onMatch>ACCEPT</onMatch><!-- 是这个级别的就记录 -->
<onMismatch>DENY</onMismatch><!-- 不是这个级别的拒绝记录 -->
</filter>
</appender>
<!-- 各个级别的配置⽅式⼤同⼩异,注释参考error -->
<!-- warn file -->
<appender name="FILE_WARN"class="ch.olling.RollingFileAppender">
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
<file>${LOG_PATH}/${APPDIR}/log_warn.log</file>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP"> <maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.der.PatternLayoutEncoder">
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
2023年春节高速免费时间表<onMismatch>DENY</onMismatch>
秦昊资料</filter>
</appender>
<!-- info file -->
<appender name="FILE_INFO"class="ch.olling.RollingFileAppender">
<file>${LOG_PATH}/${APPDIR}/log_info.log</file>
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.olling.SizeAndTimeBasedFNATP"> <maxFileSize>5MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.der.PatternLayoutEncoder">
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- console 控制台:⽇志打印到控制台 -->
<appender name="STDOUT"class="ch.ConsoleAppender">
dnf接收频道信息失败解决方法<encoder>
<!-- ⽇志输出格式:⽇期⽇志级别线程类 [⽂件名:哪⾏] -->
<pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<!-- 过滤器 -->
<level>debug</level><!-- 允许打印debug以上级别的⽇志 -->
</filter>
</appender>
<logger name="wcodermunity"level="debug"/><!-- 单独声明哪个包下的⽇志是什么级别 -->
<root level="info"><!-- 所有项⽬根⽬录的级别是info-->
<!-- 最后,启⽤这些⽇志配置 -->
<appender-ref ref="FILE_ERROR"/>
<appender-ref ref="FILE_WARN"/>
<appender-ref ref="FILE_INFO"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
</configuration>
注意:配置⽂件中只配置了info、warn和error级别的⽇志,没有配置debug级别的⽇志,所以⼀会测试不会⽣成debug的⽇志⽂件。
测试
测试代码
@SpringBootTest
@RunWith(SpringRunner.class)
public class LoggerTest {
// 通过⽇志⼯⼚实例化⽇志对象,参数通常就是当前类
public static final Logger logger = Logger(LoggerTest.class);
@Test
public void test01(){
System.out.Name());// 打印⽇志对象名字
logger.debug("debug log");// 输出debug⽇志
logger.info("info log");// 输出info⽇志
logger.warn("warn log");// 输出warn⽇志
<("error log");// 输出error⽇志
}
}
运⾏结果杨思琦吴帅
打印出⽇志对象名,三种⽇志类型
⽇志⽂件
配置⽂件中没有配置debug相关的⽇志处理,果然没有⽣成debug级别的⽇志⽂件。
因为⽇志⽂件⽐较⼩没有超过5MB,没有分离创建新的⽇志⽂件,所以使⽤默认命名,⽽不是指定的⽇志⽂件名格式。
小白花的做法
⽇志内容按照级别分类