Springboot+logback不同业务的日志打印到不同文件

主要是用于系统日志和业务日志区分开,并且生成到不同的文件夹

参考:https://blog.csdn.net/mggwct/article/details/77718122

一.首先搭建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("白条用户进来了...");
  }

}

完成~~~~~~~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值