`
w445097062
  • 浏览: 11399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spring写日志

阅读更多

转自--dongsw

想在项目里面使用log4j做日志的记录,但现在需要写日志的类很多,而且写日志的代码都是雷同的,所以就利用spring的aop来完成写日志的任务。
首先,需要将log4j先配置好在web.xml中加入解析器servlet的配置

<context-param>     
 <param-name>log4jConfigLocation</param-name>     
 <param-value>/WEB-INF/classes/log4j.properties</param-value>  
</context-param>  
  
<servlet>     
 <servlet-name>log4j</servlet-name>  
 <servlet-class>  
  org.springframework.web.util.Log4jConfigServlet  
 </servlet-class>  
 <load-on-startup>2</load-on-startup>  
</servlet>  
  
<listener>     
  <listener-class>  
   org.springframework.web.util.Log4jConfigListener  
  </listener-class>  
 </listener> 

 

之后,由于我项目当中配置了大量的service类,类名都以Service结尾,为了方便配置使用spring当中的BeanNameAutoProxyCreator类进行aop配置。 
在spring配置文件中配置如下:

<bean class="cn.aresoft.fw.log.LoggerAdvice" id="loggerAdvice"/>  
 <bean class=  
  "org.springframework.aop.framework  
  .autoproxy.BeanNameAutoProxyCreator" >  
<!-- 始终以CGLib技术动态代理-->  
<!-- <property name="optimize"><value>true</value></property>  -->  
<!-- 配置开关  这句不加getBean()方法获得bean是会报类型转换异常-->  
 <property name="proxyTargetClass"><value>true</value></property>  
  
 <property name="interceptorNames">  
   <list>  
   <value>loggerAdvice</value>  
   </list>  
 </property>  
 <property name="beanNames">  
   <list>  
   <value>*Service</value>  
   </list>  
 </property>  
</bean>

 再来就是写Advice类了也就是配置中的LoggerAdvice,代码如下:

public class LoggerAdvice implements MethodBeforeAdvice,   
AfterReturningAdvice,ThrowsAdvice {  
public void before(Method method, Object[] args,  
                Object target)throws Throwable {  
   Logger logger = Logger.getLogger(target.getClass());   
   logger.debug("+Class : "+ target.getClass().getName());   
   logger.debug("+Method : "+ method.getName());   
 }  
  
public void afterReturning(Object retuVal, Method method,  
 Object[] args,Object target) throws Throwable {  
   Log log = LogFactory.getLog(target.getClass());  
   //do log  
 }  
      
public void  afterThrowing(Method method,Object[] args,  
 Object target,Exception ex){  
   Logger logger = Logger.getLogger(target.getClass());   
   logger.error("数据处理时发生异常",ex);   
 }  
}
 
分享到:
评论

相关推荐

    spring aop 日志管理

    在日志管理中,Spring AOP 可以非常有效地帮助我们记录应用程序的关键操作和异常信息,提供对系统行为的跟踪和分析能力。 1. **AOP概念**: - 切面(Aspect):定义关注点的模块化,如日志、事务管理等。 - 连接...

    Spring AOP 日志管理 实例

    Spring AOP 日志管理 实例LoggingThrowsAdvice.java

    Spring面向方面编程写日志

    Spring 面向方面编程(AOP)是Java开发中的一种重要技术,它允许程序员将关注点从核心业务逻辑中分离出来,例如日志记录、事务管理、性能监控等。在Spring框架中,AOP主要通过切面(Aspect)来实现,这是一种模块化...

    spring(纯手写spring)

    - **切面(Aspect)**: AOP的核心概念,它封装了关注点,如日志、事务管理等,将这些关注点与业务逻辑分离。 - **通知(Advice)**: 在特定连接点执行的操作,如方法调用前、后或异常发生时。 - **连接点(Join ...

    springaop多数据库读写分离

    Spring AOP是Spring框架的重要组成部分,它提供了一种声明式的方式来处理横切关注点,如日志记录、事务管理等。在我们的场景中,Spring AOP可以用于动态地决定哪些操作应该路由到读库,哪些操作应该路由到写库。 要...

    Spring实现增删改查

    6. **Spring AOP**:AOP用于模块化的横切关注点,如日志记录、性能监控、事务管理等。在Spring中,可以使用注解或XML配置定义切面,实现代码的解耦。 7. **Spring Boot**:虽然题目中未明确提及,但Spring Boot是...

    spring之mysql读写分离

    在主从复制中,数据的写操作(INSERT、UPDATE、DELETE)只在主库上进行,而从库则通过同步日志来实时更新数据,保证与主库的一致性。这样,读操作可以分散到多个从库上,减轻主库的压力,提高系统性能。 Spring AOP...

    spring 源码中文注释

    AOP允许开发者定义“切面”,这些切面可以包含业务逻辑的各个部分,如日志记录、事务管理等。Spring通过代理模式实现了AOP,主要有JDK动态代理和CGLIB代理两种方式。在源码中,`Advisor`、`Pointcut`和`Advice`等...

    shruts2+spring写的简单BBS管理

    在"shruts2+spring写的简单BBS管理"项目中,这两个框架的结合可以实现高效的BBS(Bulletin Board System)后台管理。开发者可能利用Struts2来处理用户交互,如发帖、回帖、搜索等操作,而Spring则负责管理业务对象、...

    spring攻略 第2版

    此外,Spring还提供了AOP(面向切面编程)支持,允许开发者定义和执行横切关注点,如日志、事务管理等,从而实现了代码的模块化和职责分离。 在Spring MVC中,Spring提供了一种用于构建Web应用的模型-视图-控制器...

    spring源码注释中文

    4. **AOP(面向切面编程)**:Spring 的 AOP 模块提供了面向切面编程的实现,允许开发者定义方法拦截器和切入点,以实现如日志、事务管理等跨切面的关注点。 5. **AS(Application Server)**:Spring 提供了与常见...

    spring boot日志文件配置

    该配置文件为springboot的日志配置文件,在项目中直接可直接引用

    DuckFly,用spring写的小鸭子飞

    2. **面向切面编程**:Spring的AOP(Aspect Oriented Programming)特性允许我们在不修改`Duck`类的基础上,添加日志、性能监控等横切关注点。例如,我们可以在飞行行为执行前后加入日志记录,以追踪鸭子飞行的状态...

    (转载)自己动手写一个spring

    《自己动手写一个Spring》这篇文章主要探讨了Spring框架的核心概念,并通过模拟其实现来帮助读者深入理解其工作原理。Spring是Java开发中最流行的框架之一,它以依赖注入(Dependency Injection,DI)和面向切面编程...

    spring写好的代码,配合spring必须jar包使用

    在标题和描述中提到的“spring写好的代码,配合spring必须jar包使用”,意味着我们有已经编写完成的Spring相关代码,并需要合适的jar包来运行。下面我们将详细探讨Spring框架的核心概念、关键组件以及如何配置和使用...

    Spring 参考手册 Spring速查手册 spring初学者使用

    Spring的AOP模块支持创建定义横切关注点的“切面”,如日志、事务管理等,这些关注点可以被模块化并独立于业务逻辑。AOP通过动态代理或字节码增强实现切面的插入。 四、Bean的生命周期管理 Spring管理的Bean有三种...

    spring4d 一款delphi应用开发框架

    Spring4D 提供了面向切面编程的支持,允许开发者定义横切关注点,如日志、事务管理等,并将其与业务逻辑解耦。这使得代码更加整洁,减少了重复代码,提高了代码复用性。 **4. 数据访问层(Data Access Layer, DAL)...

    spring写的一个小demo

    在本项目中,我们主要关注的是“spring写的一个小demo”,这是一个基于Java的Spring框架的实践案例。Spring是Java开发中最流行的开源框架之一,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

    spring mysql 读写分离

    主库上的所有写操作都会被记录到二进制日志(binlog),从库会定期或者实时地从主库获取这些日志并应用到自己的数据上,从而保持与主库数据的一致性。 **4. Spring配置** 在Spring中,可以使用多数据源配置来实现...

    mini-spring是简化版的spring框架,能帮助你快速熟悉spring源码和掌握spring的核心原理.zip

    AOP是Spring提供的另一大特色,它允许开发者定义关注点(如日志、事务管理)并将其与业务逻辑分离。在mini-spring中,你会了解到如何创建切面、定义通知(advises)以及如何将这些切面应用到目标对象上。这对于编写...

Global site tag (gtag.js) - Google Analytics