SpringBoot使用Lombok输出日志到指定的Appender中

Lombok插件内置有 @Slf4j@Log4j / @Log4j2 两种日志注解,注解后可直接调用 log.info()、log.warn()等方法输出信息到日志,

但是我的项目中配置了两个不同的日志输出Appender

 1     <Appenders>
 2         <Console name="Console" target="SYSTEM_OUT">
 3             <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
 4         </Console>
 5         <!-- 系统日志-->
 6         <RollingFile name="RollingFile" fileName="${baseDir}/logs/${date:yyyy-MM-dd}.log" 
 7             filePattern="${baseDir}/logs/${date:yyyy-MM}/${date:YYYY-MM-dd}-fargo.log.zip">
 8             <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} %-5p %c{1}:%L - %msg%n" />
 9             <Policies>
10                 <OnStartupTriggeringPolicy />
11                 <SizeBasedTriggeringPolicy size="10 MB" />
12             </Policies>
13             <DefaultRolloverStrategy max="20" />
14         </RollingFile>
15         <!-- 手机短信日志-->
16         <RollingFile name="SMSRollingFile" fileName="${baseDir}/logs/${date:yyyy-MM-dd}-sms.log" 
17             filePattern="${baseDir}/logs/${date:yyyy-MM}/sms/${date:YYYY-MM-dd}-sms-fargo.log.zip">
18             <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%-5p] %msg%n" />
19             <Policies>
20                 <OnStartupTriggeringPolicy />
21                 <SizeBasedTriggeringPolicy size="10 MB" />
22             </Policies>
23             <DefaultRolloverStrategy max="20" />
24         </RollingFile>
25     </Appenders>
1     <Loggers>
2         <Root level="INFO">
3             <AppenderRef ref="RollingFile" />
4         </Root>
5         <Logger name="SMSLogger" additivity="false" level="INFO">
6             <appender-ref ref="SMSRollingFile" level="INFO"/>
7         </Logger>
8     </Loggers>

 

在不使用Lombok的情况下一般是通过调用 LoggerFactory 的getLogger()方法来获取对应 Appender 的对象,

Logger logger = LoggerFactory.getLogger("SMSLogger");

 

使用Lombok插件后可直接调用,但是如果需要输出到指定的 Appender 中的话,需要将 @Slf4j 或 @Log4j / @Log4j2 中 topic 参数的值设置为对应的Logger的name值。

比如,我要将日志通过SMSLogger输出,那么就应该做如下配置

    @Log4j2(topic = "SMSLogger")
    static class TestLog {
        public static void test() {
            Logger logger = LoggerFactory.getLogger("SMSLogger");
            log.error("测试Lombok日志注解 - Lombok");
            logger.error("测试Lombok日志注解 - LoggerFactory");
        }
    }

 

查看对应文件2021-08-14-sms.log

SpringBoot使用Lombok输出日志到指定的Appender中

 

 

成功输出

SpringBoot使用Lombok输出日志到指定的Appender中

上一篇:[Mugeda HTML5技术教程之1] HTML5: 生存还是毁灭


下一篇:移动教室APP