一、环境搭建
1、新建web工程,引入lombok包,(如果没有安装lombok插件,先安装插件)
2、pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cobra</groupId>
<artifactId>logdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>logdemo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、项目结构:
二、coding:
1、新建controller包,新建LogTestController类,配置映射:
package com.cobra.logdemo.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: Baron
* @Description: 日志输出配置demo
* @Date: Created in 2019/3/26 17:46
*/
@RestController
@RequestMapping("/log")
@Slf4j
public class LogTestController {
@RequestMapping("/debug")
public String printDebug() {
String msg = "this is a debug msg !";
log.debug(msg);
return msg;
}
@RequestMapping("/info")
public String printInfo() {
String msg = "this is a info msg !";
log.info(msg);
return msg;
}
@RequestMapping("/warn")
public String printWarn() {
String msg = "this is a warn msg !";
log.warn(msg);
return msg;
}
@RequestMapping("/error")
public String printError() {
String msg = "this is a error msg !";
log.error(msg);
return msg;
}
}
2、log配置之一,application.yml的配置:
#debug: true
logging:
level:
#指定包,指定类,或者直接root
#root: debug
com.cobra.logdemo.controller: debug
#日志输出配置二选一,只有两个都配置,只有一个生效,
#区别是path默认生成的是spring.log文件,而path生成的是直接命名的文件,可以是相对路径也可以是绝对路径
file: var/my.log
#path: var/my.log
# pattern:
#控制台日志输出格式配置,仅对控制台有效
#console: "%d -%msg%n"
3、log配置之二,新建logback-spring.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--输出日志格式-->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<!--只保存info日志-->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/info/info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--只保存warn日志-->
<appender name="fileWarnLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/warn/warn.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--只保存error日志-->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%d - %msg%n
</pattern>
</encoder>
<!--滚动输出策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>d:/logtest/error/error.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileWarnLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>
三、启动测试,分别访问http://localhost:8080/log/debug、http://localhost:8080/log/info、http://localhost:8080/log/warn、http://localhost:8080/log/error:
得到文件:
四、项目地址:https://github.com/yaobaron/logdemo