jsonlayout log4j2 时间问题_Java Web开发入门(8)—— lombok + Log4j2

在上一篇中讲述了如何在工程中配置Log4j2来记log。

在使用Log4j2的过程中,有一个不太容易被注意的小问题:在每个要记log的类里面,都要定一个org.apache.logging.log4j.Logger的实例,并且把当前类作为参数传给org.apache.logging.log4j.LogManager.getLogger()。

初看起来不是什么问题,但在实际工程中有时候是一个让人很恼火的问题:

1)需要在每个类里面都添加类似的这么一行

	private static Logger logger = LogManager.getLogger(HelloworldApplication.class);

比较麻烦。

2)在实际工作中,创建新的类的时候,前面的这么一行经常是从其他现成的类里面拷贝过来的,一旦忘记改当前类名的话,新创建的类打印出来的log就会都被写成HelloworldApplication类的log:

2019-07-25 10:05:04,692 [WARN ] HelloworldApplication.xxx() - xxxxxxx

为了省去这两个小小的麻烦、最重要的是避免出现类似的低级错误浪费研发的时间,推荐采用lombok annotation的方案来自动生成相关的代码。

具体操作如下:

引入依赖

打开pom文件,添加lombok的依赖:

<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.14.8</version>
 <scope>provided</scope>
</dependency>
注:在本次试验中发现,使用最新的版本1.18.8会出问题,无法识别@Log4j2。而使用1.14.8版本没有这个问题。
lombok只是在编译的过程中生效,不需要打包进jar或者war,所以此处的scope设置成provided。

记log

在要记log的类里面找到这一行代码并删除:

	private static Logger logger = LogManager.getLogger(HelloworldApplication.class);

可以同时删除导入的类:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
注:下一篇会介绍自动导入要用到的import的方法。

在要打印log的类前面加上一行注解@Log4j2,如:

@Log4j2
@SpringBootApplication
public class HelloworldApplication implements ApplicationRunner {
    ……
}
注:实际上,注解 @Log4j 会在被注解的类里面自动生成一行代码: private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class); 并引入依赖 import lombok.extern.log4j.Log4j2; 这样,一个名为log的变量就被自动生成出来了。

这时候,就可以在当前class里面直接使用log替换之前定义的logger来打印日志了:

		log.debug("Debugging log");
		log.info("Info log");
		log.warn("Hey, This is a warning!");
		log.error("Oops! We have an Error. OK");
		log.fatal("Damn! Fatal error. Please fix me.");

查看log

点击Run button或者运行jar,并查看log。

911c73286f3ad01cdee384df5ba20e54.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值