Springboot+logback不同业务的日志打印到不同文件
主要是用于系统日志和业务日志区分开,并且生成到不同的文件夹
一.首先搭建springboot项目工程
二.
1.引入logback依赖
在pom文件中引入:
<!-- 打印日志 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
2.在配置文件中加入logback的配置
logging:
config: classpath:log/logback.xml
3在src/main/resources下引入log包
4下面是properties的配置:
logback.path=D:/local
logback.zip.path=D:/local
logback.maxFileSize=20KB
logback.maxHistory=15
logback.totalSizeCap=2048MB
logback.level=INFO
5logback.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration scan="true">
<property resource="log/logback.properties" />
<!-- 控制台日志配置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 格式化 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%p] [%t] %c{36} - %m%n</pattern>
</encoder>
</appender>
<!-- 自定义日志 -->
<appender name="baitiaoUserAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${logback.path}/sign.log</File>
<append>true</append>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logback.zip.path}/%d{yyyy-MM-dd}/info222-%i.zip</fileNamePattern>
<!-- 单个日志大小 -->
<maxFileSize>${logback.maxFileSize}</maxFileSize>
<!-- 日志保存周期 -->
<maxHistory>${logback.maxHistory}</maxHistory>
<!-- 总大小 -->
<totalSizeCap>${logback.totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder charset="UTF-8">
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [%thread] %file:%line - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 不同的业务逻辑日志打印到指定文件夹-->
<logger name="baitiaoUser" additivity="false" level="INFO">
<appender-ref ref="baitiaoUserAppender"/>
</logger>
<logger name="com.ctdcn.ecard.controller" level="INFO"/>
<root level="${logback.level}">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE_INFO" />
</root>
</configuration>
6在项目主类找个位置
7logfileName.java
package com.ctdcn.ecard.utils;
import org.apache.commons.lang3.StringUtils;
public enum LogFileName {
//配置到logback.xml中的logger name="vipUser"
BAITIAO_USER("baitiaoUser");
private String logFileName;
LogFileName(String fileName) {
this.logFileName = fileName;
}
public String getLogFileName() {
return logFileName;
}
public void setLogFileName(String logFileName) {
this.logFileName = logFileName;
}
public static LogFileName getAwardTypeEnum(String value) {
LogFileName[] arr = values();
for (LogFileName item : arr) {
if (null != item && StringUtils.isNotBlank(item.logFileName)) {
return item;
}
}
return null;
}
}
8LoggerUtils.java
package com.ctdcn.ecard.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerUtils {
public static <T> Logger Logger(Class<T> clazz) {
return LoggerFactory.getLogger(clazz);
}
/**
* 打印到指定的文件下
*
* @param desc 日志文件名称
* @return
*/
public static Logger Logger(LogFileName desc) {
return LoggerFactory.getLogger(desc.getLogFileName());
}
}
9到此就可以测试了
public class TokenController {
private final Logger logger = LoggerFactory.getLogger(TokenController.class);
public static void main(String[] args) {
BAITIAO_USER_LOG.info("白条用户进来了...");
}
}
完成~~~~~~~!