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

利用spring写日志

阅读更多
想在项目里面使用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); 
 }
}






分享到:
评论

相关推荐

    springaop多数据库读写分离

    以下将详细讲解如何利用Spring AOP来实现多数据库的读写分离。 首先,了解读写分离的基本概念。读写分离是指在一个数据库系统中,将读操作和写操作分配到不同的数据库服务器上,通常读操作远大于写操作,这样可以...

    spring之mysql读写分离

    本文将深入探讨如何利用Spring AOP(面向切面编程)实现应用层的MySQL读写分离,并结合一主多从的配置来进行详细讲解。 首先,我们需要理解MySQL的主从复制机制。在主从复制中,数据的写操作(INSERT、UPDATE、...

    Spring实现增删改查

    在这个“Spring实现增删改查”的项目中,我们将深入探讨如何利用Spring框架来实现数据库操作的基础功能。 1. **依赖注入(DI)**:在Spring框架中,DI是一种设计模式,它允许对象之间的关系在运行时被外部容器管理...

    spring源码注释中文

    Spring 框架是 Java 开发中的一个核心组件,它为构建可维护、模块化和松耦合的应用程序提供了一种强大的方式。...通过这些深入的学习,开发者可以更好地利用 Spring 框架来设计和实现高效、可扩展的 Java 应用程序。

    shruts2+spring写的简单BBS管理

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

    用300行代码手写Spring V1.0版本

    虽然实际开发中我们通常使用完整版的Spring,但是理解这个简化版本有助于我们更好地利用Spring,优化我们的代码,并且加深对软件设计原则的理解。在后续的学习中,我们还可以探索Spring的其他特性,如MVC(Model-...

    spring mysql 读写分离

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

    用MyEclipse开发spring.doc

    【Spring 框架开发与 MyEclipse 集成详解】 在软件开发中,Spring 框架因其强大的依赖注入、AOP(面向切面...在实际项目中,你可以根据需求扩展 Bean 配置,以及利用 Spring 提供的其他特性,如 AOP、数据访问支持等。

    spring Batch实现数据库大数据量读写

    本篇文章将深入探讨如何利用Spring Batch实现数据库大数据量的读写操作。 ### 1. Spring Batch 概述 Spring Batch 提供了一套完整的解决方案,涵盖了批量处理的生命周期管理,包括初始化、执行、监控和重试等环节...

    Spring框架-简单通讯录项目

    1.利用spring对实例管理 2.利用spring框架对对象实例注入 3.利用注解完成对象的创建和属性的自动注入 4.掌握AOP操作,实现增刑改查中任意一项操作增强 5.使用C3P0,jdbcTemplate模板操作数据库 6.只有一个通讯录表和...

    Spring Batch in Action英文pdf版

    开发者可以利用Spring Batch提供的执行器(JobLauncher)来启动和控制批处理作业的运行。此外,作业的执行策略可以配置为同步执行或是异步执行,以及配置执行监听器来获取作业执行过程中的状态和事件。 知识点四:...

    手写Spring框架之: HelloSpring

    Spring不仅提供了依赖注入,还包含其他核心功能,如AOP(用于添加日志、事务管理等跨切面关注点),以及数据访问、Web开发和任务调度等模块。随着对Spring的深入学习,我们将能够利用它的强大功能构建更加高效、可...

    spring-framework-1.0-m1.zip源码

    《Spring框架1.0源码解析》 Spring框架,作为Java企业级应用开发的重要支柱,自2003年发布以来,已经历了多个版本的迭代,为开发者...通过深入学习,我们可以更好地利用Spring的强大功能,提高软件开发的质量和效率。

    Spring整合其他ORM框架

    Spring 提供了对多种 ORM 框架的集成支持,如 Hibernate、MyBatis、JPA 等,使得开发者可以充分利用 Spring 的优势进行数据操作。 1. **Spring 整合 Hibernate**:Hibernate 是一款流行的 ORM 框架,它允许开发者用...

    spring mvc jar包

    以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    Spring文档:Spring-Reference_2.5_zh_CN.chm、Spring-Reference_2.5_zh_CN.chm

    学习这些文档,开发者可以深入理解Spring框架的工作原理,掌握如何使用IoC容器管理bean,如何实现AOP切面,以及如何利用Spring进行数据访问和Web应用开发。同时,文档还会详细介绍各种配置选项、API用法和最佳实践,...

    spring aop ioc实例

    Spring AOP和IOC是Spring框架的核心特性,它们极大地简化了企业级Java应用的开发。...在实际项目中,结合使用Spring AOP进行日志记录、事务管理等,以及利用IOC管理对象和依赖,能够显著提升代码质量和可维护性。

    手写SpringIOC注解实现版本

    通过阅读和分析`SpringIocByAnnotation`压缩包中的代码,我们可以深入学习Spring的IoC容器如何解析注解,管理bean的生命周期,以及如何利用反射和AOP进行依赖注入和事务管理。这样的实践对于提升Spring框架的使用...

    学习了spring.net后写的小例子

    在"学习了spring.net后写的小例子"中,我们可以看到作者通过实践来加深对Spring.NET的理解。 Spring.NET的核心特性之一是依赖注入,它允许我们解耦组件间的依赖关系,使得代码更加灵活和可测试。在这个小例子中,...

Global site tag (gtag.js) - Google Analytics