Springboot logback.xml自定义业务日志入库

说明:本文是基于spring boot  lombok @Slf4j

1.进入包

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

2.logback.xml配置  主要为第三个自定义日志配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <property name="LOG_PATH" value="${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}" />
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_PATH}/info.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/info-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <File>${LOG_PATH}/error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error-%d{yyyyMMdd}.log.%i
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n

            </Pattern>
        </layout>
    </appender>

    <!--自定义日志-->
    <appender name="MY_INFO" class="com.richfit.sod.appserver.common.log.CustomLog">
    </appender>

    <root level="INFO">
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="ERROR_FILE" />
        <appender-ref ref="MY_INFO" /><!--自定义日志-->
    </root>
   
</configuration>

3.日志业务处理

public class CustomLog<E> extends UnsynchronizedAppenderBase<ILoggingEvent> {

    @Override
    public void append(ILoggingEvent event) {
        //这里可以写业务  入库
        try {
            if(event != null){
                String message = event.getFormattedMessage();
                if(message != null && message.contains("aaa")){
                    Object[] arg = event.getArgumentArray();
                    if(arg != null && arg.length > 0){
                        String oneArg = message.replace("'", "''");
                        String twoArg = arg[0].toString();
                        String thrArg = arg[1].toString();
                        System.out.println(oneArg);
                        System.out.println(twoArg);
                        System.out.println(thrArg);
                        System.out.println(message);
                    }
                }
                //Map<String, String> map = new HashMap<>();
                //map.put("level", event.getLevel().levelStr);
                //map.put("message", message.replace("'", "''"));

            }

            /*if(message != null && message.contains("aaa")){
                Thread.sleep(5000);
                System.out.println("aaaaaaaaaaaaaaa");
            }*/
            // 处理逻辑

        } catch (Exception e) {
            System.err.println(e);
        }
    }
}

4.代码使用案例

@Slf4j
@RestController
@RequestMapping("sfEntityList")
@Api(value = "tree服务", tags = "tree服务")
public class SfEntityListController {

    @Autowired
    private SfEntityListService sfEntityListService;


    @GetMapping(value = "/show")
    @ApiOperation(value = "配置树-根据树entityListId查询当前节点对象", notes = "配置树-配置树-根据树entityListId查询当前节点对象", produces = "application/json")
    public BaseResult show(@ApiParam(required = true, value = "业务树id") @RequestParam(value = "entityListId", required = true) String entityListId) {
        log.info("aaa","bbb","ccc","ddd","fff");//日志使用
        return new SuccessResult(sfEntityListService.getById(entityListId));
    }

5.到此日志结束,每天进步一点点。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值