1. 前言
A. SpringBoot提供了对常用日志的支持,如:Log4J、Log4J2和Logback等,默认使用Logback;
B. Logback是Log4J框架的作者开发的新一代日志框架,这个效率更高;
C. 日志元素内容
时间间隔:yyyy-mm-dd HH:mm:ss.SSS
日志级别:trace < debug < info < warn < error < fatal,如果设置为info,则低于info的信息都不会输出
进程ID
分隔符:---标识实际日志的开始
线程名:方括号括起来
Logger名:通常使用源代码的类名
日志内容
2. maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>
注意:实际开发中不需要直接添加该依赖,因为spring-boot-starter中包含它
3. application.properties方式
A.
B. 默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件
4. 自定义日志方式
A. 根据不同的日志框架,按照规则配置文件名,就能被正确加载,如Logback日志文件logback-spring.xml(官方推荐)或logback.xml,放在src/main/resources下
B. logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!-- configuration包含的三个属性都是默认值 --> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!-- contextName区分不同应用程序的记录 --> <contextName>default</contextName> <!-- 设置变量,定义的值会被插入到logger上下文中, ${}使用变量 --> <property name="log.path" value="/Users/tengjun/Documents/log" /> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <!-- %d{HH:mm:ss.SSS}表示日志输出时间, %contextName表示上下文名称, %thread表示线程名, %-5level表示日志级别, 使用5个字符靠左对齐, %logger{36}日志输出者名字, %msg表示日志消息, %n表示换行符 --> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--输出到文件--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> <totalSizeCap>1GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="console" /> <appender-ref ref="file" /> </root> <!-- logback为java中的包 --> <logger name="com.dudu.controller"/> <!--logback.LogbackDemo:类的全路径 --> <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false"> <appender-ref ref="console"/> </logger> <!-- logback-spring.xml命名的文件才有 --> <!-- 测试环境+开发环境. 多个使用逗号隔开 --> <springProfile name="test,dev"> <logger name="com.dudu.controller" level="info" /> </springProfile> <!-- 生产环境. --> <springProfile name="prod"> <logger name="com.dudu.controller" level="ERROR" /> </springProfile> </configuration>