1. 核心依赖
spring boot
已经集成了logback
,不用导依赖,只要导入了spring-boot-starter
即可,可以排除掉log4j
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
2. 配置文件
-
主配置文件
logging: level: # 配置打印mybatis的sql语句 com.test.shop: debug config: classpath:logback-spring-dev.xml
-
logback
配置文件-
logback-spring-dev.xml
→ 开发环境<?xml version="1.0" encoding="UTF-8"?> <!-- scan: 当配置文件被修改后, 将会被重新载入。 scanPeriod:配置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="60 seconds"> <!-- 名字随便起,这是开发环境的所以起名为develop --> <contextName>develop</contextName> <!-- 定义日志存放路径,通过${LOG_PATH}的方式可以引用该变量插入到logback的上下文 当前盘符下的webapp/log/,如D:webapp/log/ 如果是Linux,则是根目录下的/webapp/log/ --> <property name="LOG_PATH" value="/webapp/log/" /> <!-- 定义日志输出格式 --> <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %boldRed(%thread) %highlight(%-5level) %boldGreen(%logger{32}) %msg%n"/> <!--1. 输出到控制台--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>${LOG_PATTERN}</Pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>debug</level> </filter> </appender> <!-- info日志文件 --> <appender name="FILE-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--常规日志文件,路径/文件名--> <file>${LOG_PATH}/log-info.log</file> <!-- 日志记录的滚动策略,按日期、大小进行记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--归档日志文件--> <fileNamePattern>${LOG_PATH}/info/log-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>30MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 日志保留天数 --> <maxHistory>15</maxHistory> </rollingPolicy> <append>true</append> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{32} Line:%-3L - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> </filter> </appender> <!-- warn 日志文件 --> <appender name="FILE-WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- warn 日志文件 --> <file>${LOG_PATH}/log-warn.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--归档日志文件--> <fileNamePattern>${LOG_PATH}/warn/log-warn.%d{yyyy-MM}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>30MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <append>true</append> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- error 归档日志文件 --> <appender name="FILE-ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- error 归档日志文件 --> <file>${LOG_PATH}/log-err.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- error 归档日志文件 --> <fileNamePattern>${LOG_PATH}/err/log-err.%d{yyyy-MM}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>30MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <append>true</append> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--请求日志文件--> <appender name="HTTP-INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/log-http.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/http/log-http.%d{yyyy-MM}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>30MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>15</maxHistory> </rollingPolicy> <append>true</append> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger Line:%-3L - %msg%n</pattern> <charset>utf-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> </filter> </appender> <!-- 异步输出,异步的log片段必须在同步段后面,否则不起作用 --> <appender name="FILE-INFO-ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="FILE-INFO"/> </appender> <appender name="FILE-WARN-ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="FILE-WARN"/> </appender> <appender name="FILE-ERROR-ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="FILE-ERROR"/> </appender> <!-- 根日志,用来指定最基础的日志输出级别,只有一个level属性。--> <root level="info"> <!-- 标识这个appender将会添加到这个loger --> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE-INFO-ASYNC"/> <appender-ref ref="FILE-WARN-ASYNC"/> <appender-ref ref="FILE-ERROR-ASYNC"/> </root> </configuration>
-
说明
-
%d
:日期转换,花括号中指定日期的格式。 -
%-4relative
:该条日志输出的时间,这个时间是相对于服务器启动到打印出这条日志的相对时间,4表示时间占用的宽度。 -
%-5level
:日志的级别,日志总共5个级别,分别是debug,info,warn,error,fatal,从左往右日志级别越高,5表示日志级别占用的字符宽度。 -
%thread
:该日志所属的线程。 -
%logger{32}
:输出该日志信息的类,32表示包的层级。 -
%msg
:日志信息。 -
%n:
:换行。
-
-
注意
- 在
生产环境
不要打印到控制台
- 在
-
网友评论