logback是由log4j创始人设计的另一个开源日志组件,并且SpringBoot 默认的日志框架也是logback,所以本章主要讲解logback的基本使用方法。
由于SpringBoot默认的日志框架是 logback ,从SpringBoot 2.x后不需要引入logback的maven依赖,只需要添加logback-spring.xml即可,官方推荐使用logback-spring.xml命名,当然使用logback.xml也是可以的。
测试使用logback输出日志信,例如:执行用户登录接口,用户登录成功后,在日志文件里记录当前登录成功的用户信息。
实现步骤:
1.在resources下创建logback-spring.xml.
<configuration>
<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<property name="FILE_PATH" value="D:/springbootlesson/springbootparent/logbackdemo/myapp.%d{yyyy-MM-dd}.%i.log"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按照上面配置的FILE_PATH路径来保存日志 -->
<fileNamePattern>${FILE_PATH}</fileNamePattern>
<!-- 日志保存15天 -->
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 单个日志文件的最大,超过则新建日志文件存储 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="com.oracle" level="INFO"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
2.在application.yml中配置logback
#logback配置
logging:
config: classpath:logback-spring.xml
level:
com.oracle.service: trace
3.在UsersController中输出日志信息。
package com.oracle.controller;
import com.oracle.entity.Users;
import com.oracle.json.JsonData;
import com.oracle.json.JsonResult;
import com.oracle.service.UsersService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("users")
public class UsersController {
private final static Logger logger = LoggerFactory.getLogger(UsersController.class);
@Resource
private UsersService usersService;
@GetMapping("/")
public JsonData login(String username, String password) {
logger.debug("=====测试日志debug级别打印====");
logger.info("======测试日志info级别打印=====");
logger.error("=====测试日志error级别打印====");
logger.warn("======测试日志warn级别打印=====");
Users loginUser = usersService.login(username, password);
if (loginUser != null) {
//如果登录成功,输出日志。
logger.info("登录成功,当前用户名是:"+username);
return JsonResult.success(loginUser, "loginSuccess");
}
return JsonResult.fail("loginFailure");
}
}
官方推荐使用lombok的@Slf4j,效果于上完全相同。
package com.oracle.controller;
import com.oracle.entity.Users;
import com.oracle.json.JsonData;
import com.oracle.json.JsonResult;
import com.oracle.service.UsersService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("users")
@Slf4j
public class UsersController {
@Resource
private UsersService usersService;
@GetMapping("/")
public JsonData login(String username, String password) {
log.debug("=====测试日志debug级别打印====");
log.info("======测试日志info级别打印=====");
log.error("=====测试日志error级别打印====");
log.warn("======测试日志warn级别打印=====");
Users loginUser = usersService.login(username, password);
if (loginUser != null) {
//如果登录成功,输出日志。
log.info("登录成功,当前用户名是:"+username);
return JsonResult.success(loginUser, "loginSuccess");
}
return JsonResult.fail("loginFailure");
}
}
测试用户登录接口,在项目根目录下会生成日志文件,输出日志信息效果如下:
