关于Spring使用AOP实现log4j写入数据库

关于Spring使用AOP实现log4j写入数据库

log4j是一个很实用的日志工具,通过简单的配置文件就可以把项目运行时的日志输出到想要的位置,以下是我在使用这个类时,总结的一些经验,希望对有所困惑的朋友有些帮助.
首先我们需要在项目中导入log4j的jar包,这一步十分重要.如果使用的是maven管理项目请在就在pom.xml中写入以下依赖:

maven依赖
当引入之后,就到了编写log4j配置文件的时候,我们可以选择.properties或者xml文件两种,今天主要使用properties文件来演示,首先我们要配置根节点在log4j的配置文件中
log4j.rootLogger=error,AllAppender
error是设置日志输出级别,log4j建议使用的有四种,debug,info,error和fetal,这个我们在这篇博文里不做深入了解
AllAppender是自己指定的输出位置,因为我们要把日志文件写入数据库,所以我们要接着配置log4j的配置文件,写入以下内容:

到此当我们在切面类调用logger类的写入日志的方法就会触发这条插入语句,把日志写入数据库中,方便日后查看,当然我们也可以指定输出地址为文件类型,只要增加输出的地址:log4j.appender.AllAppender=org.apache.log4j.DailyRollingFileAppender,我相信到这里大家都明白了日志配置文件的作用和具体的配置,但是我们还没有在具体的方法里实现日志类的切面方法
在这里插入图片描述
首先我们利用@Aspect标识这是一个切面类,其次使用@Compent标识这是一个在Spring容器中注册了的bean
在这里插入图片描述
然后利用@Pointcut标识来定义一个切点,上图这个切点是所有拥有@ControllerLogAnnotation注解的方法,
然后我们使用@AfterReturning来使得切点方法成功返回值的时候,来进行编写日志.
@ControllerLogAnnotation 是我们自定义的一个注解类在这里插入图片描述
之后我们通过java反射机制可以获得切点方法上的注解的decription(),把这个内容作为日志的内容写入数据库
具体实现如下在这里插入图片描述
这个方法利用java反射返回了切点方法的注解中的decription()的内容
在这里插入图片描述
然后我们把这个内容使用logger.fetal()方法写入日志,使用MDC类将当前操作的用户和访问用户的ip绑定到日志中,前文中log4j中sql使用%X{}这样的标签可以从MDC依据key值取出value,%m是获得logger.fetal()方法的参数,即日志输出内容.到此使用AOP实现log4j编写日志到数据库就完成了,想必大家都已经明白了,哦对了,大家不要忘记在Spring的配置文件中配置<context:component-scan base-package=“com.sicheng”/>,<aop:aspectj-autoproxy proxy-target-class=“true”/>,前者是开启Spring的注解,后者是开启aop自动代理,记得设置proxy-target-class为true,aop需要在这里插入图片描述
这些jar包,不然会出现错误无法运行,aop底层动态代理如何实现,因为本文篇幅有限,本文只是总结经验之谈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值