美文网首页程序员
SpringMVC中log4J与AOP

SpringMVC中log4J与AOP

作者: 云勺 | 来源:发表于2017-12-13 11:55 被阅读0次

项目中需要将service中的类方法的调用过程,使用log4j日志记录。

service中的类和方法都很多,不可能在每个类中单独添加log4j日志记录的功
能,因此我们在这里使用AOP的思想进行横向切面。

以service类中的方法为切入点,通过AOP在方法调用前后使用log4j输出日志,内容包括正在调用的类和方法名。

在配置过程中,笔者碰到了一些或大或小的细节上的问题,在此作为记录。

首先是AOP的配置上,我们有两种选择,一是通过XML配置,二是通过注解。

XML配置可以通过以下示例:

XML配置.png

则对应的Aspect方法可以不用使用@Aspect、@Before和@After注解。

如果使用注解方式,则在XML配置文件中,只需要一行配置,开启自动代理功能即可:

自动代理.png

此时,对应的Aspect方法可以如下示例:


Aspect1.png

其次,是Spring配置文件所属域上的坑,在这里配置的AOP的XML文件,如果需要成功执行,需要在

web.xml文件中,将此XML配置文件加入到Servlet-Context中,而不是Spring-Context中,示例如下:


全局context.png

上图是配置全局的spring上下文,但是aop配置文件在这里不能成功。


Servlet的context.png

我们需要把aop的配置加载,放在servlet的初始化上下文中。

上述工作对于AOP的配置大致完成了,我们接下来需要配置log4j。在工程中,如果没有log4j的配

置,我们可以直接在src目录下创建一个log4j.properties文件;如果需要自定义此文件,可以在

web.xml中配置log4j,如:


web.xml中配置log4j

log4j.properties文件中可以参考下列配置,前者是详细的注解和参考,后者是笔者需要区分日志

等级输出,以及需要同时输出到控制台和文件的配置:

log4j.properties详解
### set log levels ###
log4j.rootLogger = INFO, console, I, W, E
### 输出信息到控制台 ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} class:%c method:%l%n%m%n
### 输出INFO 级别以上的日志 ###
log4j.appender.I = org.apache.log4j.RollingFileAppender
#log4j.appender.W.File =${scheduleProject}WEB-INF/logs/schedule.log
###输出到指定文件###
log4j.appender.I.File = e://logs/lof4j_info.log
log4j.appender.I.Append = true
log4j.appender.I.Threshold = INFO
log4j.appender.I.MaxFileSize = 50000KB
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 输出WARN 级别以上的日志 ###
log4j.appender.W = org.apache.log4j.RollingFileAppender
#log4j.appender.W.File =${scheduleProject}WEB-INF/logs/schedule.log
###输出到指定文件###
log4j.appender.W.File = e://logs/lof4j_warn.log
log4j.appender.W.Append = true
log4j.appender.W.Threshold = WARN
log4j.appender.W.MaxFileSize = 50000KB
log4j.appender.W.layout = org.apache.log4j.PatternLayout
log4j.appender.W.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
#### 输出DEBUG 级别以上的日志 ###
#log4j.appender.D = org.apache.log4j.RollingFileAppender
##log4j.appender.D.File =${scheduleProject}WEB-INF/logs/schedule.log
####输出到指定文件###
#log4j.appender.D.File = e://logs/lof4j_error.log
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = DEBUG
#log4j.appender.D.MaxFileSize = 50000KB
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 输出ERROR 级别以上的日志 ###
log4j.appender.E = org.apache.log4j.RollingFileAppender
#log4j.appender.E.File = ${scheduleProject}WEB-INF/logs/schedule.log
log4j.appender.E.File = e://logs/lof4j_error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.MaxFileSize = 50000KB
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %l\:%c\:%t\:%r ] - [ %p ]  %m%n

最后,我们运行工程,使用该方法,查看AOP结果:


控制台.png 文件中.png

相关文章

  • SpringMVC中log4J与AOP

    项目中需要将service中的类方法的调用过程,使用log4j日志记录。 service中的类和方法都很多,不可能...

  • Spring学习小记

    IOC AOP Hibernate SpringMVC

  • Java后端

    SpringMVC 干货系列:从零搭建 SpringMVC+mybatis(四):Spring 两大核心之 AOP...

  • Spring

    1、Spring和SpringMVC区别? Spring是IOC和AOP的容器框架,SpringMVC是基于Spr...

  • aop 中 获取 springmvc 参数

    业务场景中需要统计用户的访问日志,然后作分析。需要通过 aop 切需要拦截的 请求。在aop 内要分析用户的参数,...

  • org.springframework.aop.config.i

    用IEDA新建springmvc项目但是出现如题问题,解决办法:因为要用到Springmvc的AOP配合shiro...

  • Node Express拦截器

    在SpringMVC 拦截器 或者 AOP中,都有拦截的作用,如权限控制,分发不同的请求等。 nodejs Exp...

  • 面试积累之框架(五)

    谈谈你对AOP的理解: 谈谈对sprin的理解 SpringMVC的工作机制

  • springMVC记错本

    1. 一个简单的springMVC程序 jar: spring-aop.jarspring-bean.jarsp...

  • Servlet学习总结,以及结合对SpringMVC的分析进行的

    最近重读了一遍Servlet与JSP学习指南,想结合以前对反射和AOP的学习,以及对SpringMVC目前的了解,...

网友评论

    本文标题:SpringMVC中log4J与AOP

    本文链接:https://www.haomeiwen.com/subject/cleaixtx.html