SpringBoot2 集成log4j2日志框架的实现
前言
Log4j2是Log4j的进化版本,并提供了许多Logback可用的改进,同时解决了Logback体系结构中的一些固有问题。而且日志处理中我们会用到kafka作为日志管道。而kafka客户端依赖与Logback的兼容不是很完美,你可以选择排除依赖冲突或者使用Log4j2。
排除Logback依赖
SpringBoot2.x默认使用Logback日志框架,要使用Log4j2必须先排除Logback。
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging
引入Log4j2依赖
org.springframework.boot spring-boot-starter-log4j2
上面的log4j2已经适配了slf4j日志门面,所以我们的代码无需替换,只需要替换具体的日志框架以及对应的配置文件。
配置Log4j2
创建log4j2.xml文件,放在工程resources目录里。这样就可以不加任何配置。如果你需要指定配置文件需要在Springboot配置文件application.yml中指定logging.config属性。下面是一份比较详细的log4j2配置文件:
基本上你拿上面的配置根据你自己的需要更改一下即可生效。windows下${sys:user.home}会将日志打印到用户目录下
调用Logger输出日志
下面的示例代码使用了神器lombok中的@Slf4j注解可以很方便的使用org.slf4j.Logger对象。日常开发尽量使用Slf4j门面来处理日志,尽量避免使用具体的日志框架。
packagecn.felord.spring.security; importlombok.extern.slf4j.Slf4j; importorg.springframework.web.bind.annotation.GetMapping; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; importjava.time.LocalDate; importjava.util.Properties; /** *@authordax *@since2019/10/90:03 */ @Slf4j @RestController @RequestMapping("/logging") publicclassLogController{ @GetMapping("/do") publicStringlog(){ log.info("log4j2testdate:{}info:{}",LocalDate.now(),"请关注公众号:Felordcn"); return"log4j2"; } }
控制台输出:[00:14:48:161][INFO]-cn.felord.spring.security.LogController.log(LogController.java:23)-log4j2testdate:2019-10-09info:请关注公众号:Felordcn并存档。
总结
今天我们将SpringBoot2.x的日志框架由默认的Logback替换为log4j2并着重的提及了一些实战中使用的要点。相信你很快能够掌握这一技巧。日志作为应用运行情况,业务执行情况的重要依据,是开发排错,业务追溯的重要保障。希望各位能够重视起来。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
作者:码农小胖哥
来源:https://segmentfault.com/a/1190000020618973
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。