目前市面上的日志框架常见的有着几类,而我们常用的就是slf4j,它的实现以log4j,log4j2和logback为主,本文只要以logback作为slf4j的实现
打开pom文件的图表时,我们可以发现,SpringBoot内部已经有logback的相关依赖,此时我们不需要引入logback的相关依赖
在resources下新建一个人logback-spring.xml,作为日志的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<contextName>Logback For demo Mobile</contextName>
<!-- 设置log日志存放地址 -->
<!--(改) 单环境设置 -->
<!--<property name="LOG_HOME" value="/logger/log" />-->
<!-- 多环境设置 -->
<springProfile name="dev">
<property name="LOG_HOME" value="/logger/log1" />
</springProfile>
<springProfile name="prod">
<property name="LOG_HOME" value="/logger/log2" />
</springProfile>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder默认配置为PartternLayoutEncoder -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} -%msg%n</pattern>
</encoder>
<target>System.out</target>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 ,每天保存(侧翻)一次 -->
<FileNamePattern>D:/\${LOG_HOME}/\%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数 -->
<MaxHistory>180</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} -%msg%n</pattern>
</encoder>
<!--日志文件最大的大小 -->
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- (改)过滤器,可以指定哪些包,哪个记录到等级, -->
<!-- 运用的场景比如,你只需要com.demo.controller包下的error日志输出。定义好name="com.demo.controller" level="ERROR" 就行了 -->
<logger name="com" level="INFO">
<appender-ref ref="ROLLING_FILE" />
</logger>
<!-- 全局,控制台遇到INFO及以上级别就进行输出 -->
<root level="INFO">
<appender-ref ref="STDOUT" />
<!--日志文件保存到指定位置 -->
<appender-ref ref="ROLLING_FILE" />
</root>
</configuration>
新建两个配置文件,application-dev.properties和application-prod.properties,配置如下
定义一个java类,用于日志测试
package com.example.demo.controller;
import com.example.demo.entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by linjiaming
*/
@RestController
public class HelloController {
Logger log = LoggerFactory.getLogger(HelloController.class);
@Value("${boot.name}")
private String name;
@RequestMapping("hello")
public User hello(){
log.info("姓名"+name);
User user = new User();
user.setName(name);
return user;
}
}
运行后,地址栏输入http://localhost:8081/hello,得到日志文件: