当前位置: 首页 > Web前端 > HTML

Lombok的@CustomLog,公司的多场景日志就好多了!

时间:2023-03-28 14:45:13 HTML

开发环境JDK1.8Lombok-1.18.16背景公司因开源节流需要,需要区分重要日志和非重要日志。一根月光原木的成本高达三十万。工资)。因此,公司要求对日志进行分离,去除一些不需要的日志,记录的日志最多保留15天,重要日志保留30天。为了区分场景日志,单独设置了一个Logger日志记录器来收集日志。为了在项目中继续使用注解,此时需要@CustomLog注解,方便将多个logger集成在一起。说多了,干吧!如果直接在项目中使用@CustomLog注解,会看到如下图所示的错误信息:此时需要添加配置文件lombok.config,在项目中直接使用即可!特别注意:配置文件的位置需要在@CustomLog注解所在文件的上层目录。为了方便,我一般直接放在模块的根目录或者项目的根目录下使用。添加的配置信息如下:lombok.log.custom.declaration=com.lombok.log.IntegrationLogcom.lombok.log.IntegrationLog.getLogger(TYPE)复制代码注意com.lombok.log.IntegrationLog和com.lombok.log.IntegrationLog.getLogger(TYPE)中间有个空格,这样才能生效。至于getLogger的括号里面,有两个值可以使用,分别是TYPE(类的类型)和NAME(类的名称)。TYPE生成的代码privatestaticfinalIntegrationLoglog=IntegrationLog.getLogger(LogPrintService.class);复制代码CodegeneratedbyNAMEprivatestaticfinalIntegrationLoglog=IntegrationLog.getLogger("com.lombok.service.LogPrintService");复制代码配置成功的前提是你的类必须满足配置要求,即定义类根据龙目岛规范。代码部分,为了方便把多个logger放在一起,需要一个集成类。这里我定义了一个名为IntegrationLog的类。除了默认的Logger日志对象外,还有一个业务记录器对象BusinessLog,用于记录更重要的日志。定义好这个类之后,完成上面的配置。公共类IntegrationLog{privatefinalLoggerlogger;privatefinalBusinessLogbizLogger;privateIntegrationLog(Classclazz){this.logger=LoggerFactory.getLogger(clazz);this.bizLogger=BusinessLog.getLogger(clazz);}publicstaticIntegrationLoggetLogger(Classclazz){returnnewIntegrationLog(clazz);}publicvoidinfo(Stringformat,Object...args){logger.info(format,args);}publicvoidbizInfo(Stringformat,Object...args){bizLogger.info(format,args);}}复制代码,看代码中使用的注解的代码部分,我们可以随意使用它,一个日志对象包括我们想要的方法。@CustomLogpublicclassLogPrintService{publicvoidprintLog(){log.bizInfo("需要多付费的日志");log.info("Defaultlog");}}复制代码通过查看源码可以看出Lombok给我们生成了什么样的代码:publicclassLogPrintService{privatestaticfinalIntegrationLoglog=IntegrationLog.getLogger(LogPrintService。班级);publicLogPrintService(){}publicvoidprintLog(){log.bizInfo("hahahaha",newObject[0]);}}复制代码其实Lombok所做的就是帮我们创建一个实例,这个很容易理解.

最新推荐
猜你喜欢