一、pom.xml依赖包
注意:springboot项目默认集成了logback,不需要添加任何依赖。
二、配置文件:logback-spring.xml
放在resources目录下,Spring框架会自动进行扫描。
新建一个logback-spring.xml格式的文件名, 复制下面内容粘贴即可。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志文件路径 -->
<property name="logPath" value="./logInfo/"></property>
<!-- 日志文件名称 -->
<property name="logName" value="logInfo"></property>
<!--控制台打印日志-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- debug 日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当日文件:路径、文档名、文档输出格式 -->
<file>${logPath}${logName}.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志归档:路径名称 -->
<fileNamePattern>${logPath}${logName}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--日志文件最大的大小:rollover daily and when the file reaches 10 MegaBytes -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文档保留天数-->
<maxHistory>15</maxHistory>
</rollingPolicy>
</appender>
<!-- 开发、测试环境,指定不同包下不同的日志等级 -->
<springProfile name="dev,test">
<logger name="org.springframework.web" level="ERROR"/>
<logger name="org.springboot.sample" level="ERROR"/>
<logger name="com.ipage.work" level="INFO"/>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<logger name="org.springframework.web" level="ERROR"/>
<logger name="org.springboot.sample" level="ERROR"/>
<logger name="com.ipage.work" level="INFO"/>
</springProfile>
<!-- 基础日志等级 -->
<root level="INFO">
<appender-ref ref="FILE"/> <!-- 输出到文件 -->
<appender-ref ref="CONSOLE"/> <!-- 输出到控制台 -->
</root>-->
</configuration>
2.1 日志分级别输出
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<include resource="com/zyc/datamonitor/logback/monitor.xml" optional="true"/>
<property name="FILE_PATH_ERROR" value="/logs/log/logback-error.log"/>
<property name="FILE_PATH_WARN" value="/logs/log/logback-warn.log"/>
<property name="FILE_PATH_INFO" value="/logs/log/logback-info.log"/>
<property name="FILE_PATH_DEBUG" value="/logs/log/logback-debug.log"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件输出的文件名 -->
<File>${FILE_PATH_ERROR}</File>
<!--滚动日志 基于时间和文件大小-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动日志文件保存格式 -->
<FileNamePattern>${FILE_PATH_ERROR}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxFileSize>60MB</MaxFileSize>
<totalSizeCap>5GB</totalSizeCap>
<MaxHistory>10</MaxHistory>
</rollingPolicy>
<!-- 按临界值过滤日志:低于ERROR以下级别被抛弃 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件输出的文件名 -->
<File>${FILE_PATH_INFO}</File>
<!--滚动日志 基于时间和文件大小-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动日志文件保存格式 -->
<FileNamePattern>${FILE_PATH_INFO}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxFileSize>60MB</MaxFileSize>
<totalSizeCap>5GB</totalSizeCap>
<MaxHistory>10</MaxHistory>
</rollingPolicy>
<!-- 按临界值过滤日志:低于INFO以下级别被抛弃 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="FILE-WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件输出的文件名 -->
<File>${FILE_PATH_WARN}</File>
<!--滚动日志 基于时间和文件大小-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动日志文件保存格式 -->
<FileNamePattern>${FILE_PATH_WARN}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxFileSize>60MB</MaxFileSize>
<totalSizeCap>5GB</totalSizeCap>
<MaxHistory>10</MaxHistory>
</rollingPolicy>
<!-- 按临界值过滤日志:低于WARN以下级别被抛弃 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<!-- 按指定规则过滤日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch><!-- ERROR级别被抛弃 -->
<onMismatch>NEUTRAL</onMismatch><!-- 其它级别继续处理 -->
</filter>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="FILE-DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志文件输出的文件名 -->
<File>${FILE_PATH_DEBUG}</File>
<!--滚动日志 基于时间和文件大小-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 滚动日志文件保存格式 -->
<FileNamePattern>${FILE_PATH_DEBUG}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<MaxFileSize>60MB</MaxFileSize>
<totalSizeCap>5GB</totalSizeCap>
<MaxHistory>10</MaxHistory>
</rollingPolicy>
<!-- 按临界值过滤日志:低于INFO以下级别被抛弃 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<!-- 不过滤日志 -->
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] [%thread] %logger{50} - %msg%n
</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出 -->
<springProfile name="test,dev">
<logger name="org.springframework" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</logger>
<logger name="org.springframework" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</logger>
<logger name="com.netflix" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</logger>
<logger name="com.demo" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</logger>
<logger name="java.sql" level="DEBUG" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</logger>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-DEBUG"/>
</root>
</springProfile>
<springProfile name="prod,default">
<logger name="org.springframework" level="WARN" additivity="false">
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
</logger>
<logger name="com.netflix" level="WARN" additivity="false">
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
</logger>
<logger name="com.demo" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
</logger>
<logger name="java.sql" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
</logger>
<!-- 日志输出级别 -->
<root level="WARN">
<!-- 生产环境去掉屏幕打印提升性能 -->
<appender-ref ref="FILE-ERROR"/>
<appender-ref ref="FILE-WARN"/>
<appender-ref ref="FILE-INFO"/>
<appender-ref ref="FILE-INFO"/>
</root>
</springProfile>
</configuration>
三、配置文件:application.yml
spring:
profiles:
# 运行环境 dev|test|prod,根据active动态加载application-active.yml配置文件
active: dev
logging:
# config: ./config/logback-spring.xml #部署的时候的配置
config: classpath:logback-spring.xml #开发调试运行时的配置
[原文链接](https://blog.csdn.net/UnicornRe/article/details/124124892)
[引用链接](https://blog.csdn.net/u011047968/article/details/122827910)