SpringBoot攻略十、日志记录logback

本文详细介绍了SpringBoot中Logback的日志记录,包括如何将日志输出到文件,设置日志级别,定制日志格式,以及如何进行自定义日志配置。通过配置logging.path和logging.file可以指定日志保存位置和文件名,logging.level可调整日志级别,自定义日志格式则可以通过logging.pattern来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot默认使用LogBack日志系统,LogBack默认将日志打印到控制台上。
默认情况下会记录ERROR-level,WARN-level和INFO-level消息。

启用调试模式,会打印很多无用信息,一般不设置:
application.properties配置debug=true

如何输出日志到文件

application.properties配置如下:
logging.path=D:/log
logging.file=springboot.log
注意:
在windows下不会在D:/log下创建springboot.log,而是在项目根目录下创建 springboot.log。

如果想要在D:/log创建怎么办呢?
我们只需要设置logging.file=D:/log/springboot.log,logging.path无需做任何设置。

logging.file.max-size
设置文件大小,默认为10M,达到限制后会切换一个新文件。
logging.file.max-history
以前日志文件归档大小,只保留多久或多大的日志,如果不设置就会无限期归档。
logging.file.total-size-cap
日志归档的总大小,当日志存档的总大小超过该阈值时,将删除备份。

如何设置日志级别

日志级别总共有TARCE < DEBUG < INFO < WARN < ERROR < FATAL ,且级别是逐渐提供, 如果日志级别设置为INFO,则意味TRACE和DEBUG级别的日志都看不到。

Spring Boot默认级别就是INFO。

applicaition.properties配置(logging.level配置日志级别):
logging.level.root=INFO
root:即项目的所有日志。

使用package级别
logging.level.druid.sql=DEBUG

如何定制日志格式

logging.pattern.console=
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg%n
logging.pattern.file=
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg%n

%d{yyyy-MM-dd HH:mm:ss.SSS}——日志输出时间
%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
%-5level——日志级别,并且使用5个字符靠左对齐
%logger——日志输出者的名字
%line——行号
%msg——日志消息
%n——平台的换行符

自定义日志配置

logback:默认加载logback-spring.xml,logback-spring.groovy,logback.xml,或者 logback.groovy;
Log4j: 默认加载log4j-spring.xml,log4j.xml;
JDK: 默认加载logging.properties,都是类路径下。

如果需要自定义文件:
logging.config=classpath:conf/xml/logback.xml # 用于配置外部logback.xml

实例logback-spring.xml(推荐)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- tomcat路径为:D:\tomcat\bin
		value="logs"或者value="./logs" 	– D:\tomcat\bin\logs
		value="/logs" 					– D:\logs
		value="../logs" 				– D:\tomcat\logs -->
    <property name="LOG_HOME" value="/var/logs/GeneralSBM" />
    <property name="LOG_ERROR_HOME" value="/var/logs/GeneralSBM/error" />
    
    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
        </encoder>
    </appender>

	<!-- 文件输出 -->
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- <file>${LOG_HOME}/app.log</file> -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 如果按天来回滚,则最大保存时间为60天,60天之前的都将被清理掉,这里的值与滚动策略模式有关 -->
            <maxHistory>60</maxHistory>
            <!-- 按照日期进行归档,并且对日志文件大小进行限制 -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 设置文件大于100MB进行压缩归档 ,此时fileNamePattern要加%i -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
        </encoder>
    </appender>
    
    <!-- ERROR文件输出 -->
    <appender name="errorRollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- <file>${LOG_HOME}/app.log</file> -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_ERROR_HOME}/app.error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 如果按天来回滚,则最大保存时间为60天,60天之前的都将被清理掉,这里的值与滚动策略模式有关 -->
            <maxHistory>60</maxHistory>
            <!-- 按照日期进行归档,并且对日志文件大小进行限制 -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 设置文件大于100MB进行压缩归档 ,此时fileNamePattern要加%i -->
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger[%line] - %msg %n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
	
	<!-- spring profile不同环境不同设置 -->
    <springProfile name="dev,test">
    	<!-- 打印sql -->
    	<logger name="druid.sql" level="DEBUG" />
    </springProfile>
	
    <springProfile name="prod">
    	<logger name="druid.sql" level="INFO" />
    </springProfile>
    
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
        <appender-ref ref="errorRollingFile" />
    </root>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值