`

Spring AOP 进行统一日志处理

阅读更多
java代码:
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;

public class GenericLoggerBean {

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

	public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
		System.out.println(joinPoint.getTarget().getClass());
		logger.warn("Beginning method : " +  joinPoint.getTarget().getClass() + "." + joinPoint.getSignature().getName()+ "()");
		long startTime = System.currentTimeMillis();
		try{
			Object result = joinPoint.proceed();
			return result;
		}catch(Exception e){
			logger.warn(  joinPoint.getTarget().getClass() + "." + joinPoint.getSignature().getName() + "() invoke error" );
			logger.warn("error info ["+e.getMessage()+"]");
		}finally{
			logger.warn("Ending method : " + joinPoint.getTarget().getClass() + "." + joinPoint.getSignature().getName() + "()");
			logger.warn("Method invocation time : " + (System.currentTimeMillis() - startTime) + " ms.");			
		}
		return null;
	}

}


spring配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">


	<aop:config>
		<aop:pointcut id="logger"
			expression="execution( public * com.potato..*.*(..)) and !execution( * com.potato.core.aop.GenericLogger.*(..))" />
		<aop:aspect id="loggerAspect" ref="genericLoggerBean">
			<aop:around pointcut-ref="logger" method="invoke" />
		</aop:aspect>
	</aop:config>

	
	<bean id="genericLoggerBean"
		class="com.potato.core.aop.GenericLoggerBean">
	</bean>


</beans>
分享到:
评论
1 楼 laitaogood 2008-04-09  
你这是spring2.0吧,不知道1.0里面是否有<aop></aop>这样的写法呢,呵呵

相关推荐

    Spring项目中引入AOP进行统一日志打印

    在Spring项目中,引入AOP(面向切面编程)是一种常见的做法,主要用于实现代码的解耦和增强功能,比如统一日志打印。AOP允许我们在不修改原有业务代码的情况下,插入新的行为,如记录日志、事务管理、权限控制等。在...

    spring boot aop 统一处理日志

    在Spring Boot应用中,AOP(面向切面编程)是一种强大的工具,用于实现代码的解耦和模块化,尤其适用于处理横切关注点,如日志记录、事务管理、安全控制等。本教程将深入探讨如何利用Spring Boot的AOP特性来实现日志...

    SpringBoot学习笔记——AOP全局统一日志管理

    【SpringBoot学习笔记——AOP全局统一日志管理】 在软件开发中,日志记录是一项至关重要的任务,它有助于追踪操作记录、系统监控以及满足审计需求。SpringBoot作为一个流行的Java微服务框架,提供了AOP(面向切面...

    springboot+redis+shiro单点登录,统一异常处理,统一日志

    3. **统一日志**: - SpringBoot整合Logback或Log4j等日志框架,配置统一的日志格式和级别。 - 使用AOP(面向切面编程)实现全局日志记录,通过@Aspect注解定义一个切面类,拦截所有方法调用,记录方法的入参、出...

    微服务请求日志统一处理方案

    这通常通过AOP(面向切面编程)来实现,比如使用Spring AOP的切面来拦截方法的调用,然后在进入和离开方法时记录日志。在方法的入口,记录请求参数;在方法执行后,记录响应结果和处理耗时,同时可以通过`...

    spring boot如何使用AOP统一处理web请求

    通过使用Spring Boot框架结合AOP技术,我们可以实现Web请求的统一日志记录,从而提高代码的可维护性和可读性。本文提供了一个完整的示例代码,供读者参考和学习。 知识点: 1. Spring Boot框架的使用 2. AOP...

    spring3.2.0.rar

    这个库提供了一个简单的接口,可以适配多种日志实现,如log4j、java.util.logging等,帮助开发者统一日志处理。 在实际开发中,这些jar包将被添加到项目的类路径中,以便于使用Spring框架的各种功能。例如,`spring...

    spring

    - **日志配置**:配置log4j,统一日志输出格式和级别,便于后续调试和监控。 通过以上步骤,我们可以看到Spring框架与Struts和Hibernate的整合不仅可以极大地提升Web应用的开发效率,还能有效地管理各个层次的...

    Quartz和Spring整合

    - 日志集成:Quartz有自己的日志系统,但我们可以将其与Spring的日志框架(如Log4j或Logback)集成,统一日志输出。 总结来说,Quartz和Spring的整合提供了一种高效、灵活的任务调度方式,使得我们可以充分利用...

    小项目框架改造一:spring3.2.4+struts2.1.8+mybatis3.2.6整合

    commons-logging-1.1.1.jar是日志工具,帮助我们在项目中统一日志处理。而commons-fileupload-1.2.1.jar则用于处理HTTP请求中的文件上传。aopalliance-1.0.jar是AOP联盟的库,它是多个AOP框架之间的兼容层,使得它们...

    详细的spring + hibernate +struts 整合方法

    - **日志冲突**:SSH框架都内置了日志框架,可能会引起日志冲突,需要统一日志配置。 - **资源泄漏**:不正确关闭数据库连接或Session,可能导致资源泄漏,需要确保在操作完成后及时释放。 为了解决这些问题,...

    加入切面环绕通知实现,日志比较完善的使用方式

    5. **日志格式化**:统一日志格式,便于日志分析工具解析。 6. **异步日志**:避免日志记录影响主线程的执行效率,可以使用异步方式记录日志。 在实际应用中,我们可能还需要结合具体的需求,如`MDC(Mapped ...

    HIbernate基础包

    5. 其他可能包含的库:如`commons-logging`,`log4j`等日志处理库,以及`slf4j`这样的日志抽象层,便于统一日志管理。 在SSH开发中,通常步骤如下: 1. 配置Hibernate:在`hibernate.cfg.xml`中配置数据库连接信息...

    SSH整合项目中容易出现的错误

    统一日志实现,避免配置冲突。 9. **Struts2拦截器问题**: - 拦截器配置错误,或者自定义拦截器与SSH框架的内置拦截器冲突。检查struts-default.xml和struts-plugin.xml中的拦截器配置。 10. **异常处理**: - ...

    SSH+MySql所需jar包

    如`commons-logging.jar`用于日志记录,`log4j.jar`提供更高级的日志服务,`commons-lang3.jar`提供常用的字符串处理和集合操作方法,`slf4j-api.jar`和`slf4j-log4j12.jar`是简单日志门面,用于统一日志接口。...

    Common.Logging.dll

    总之,Common.Logging.dll是C#开发中用于统一日志记录的关键组件,它在Nhibernate和Spring.NET等框架中发挥着重要作用,帮助开发者实现更高效、灵活的日志管理。了解如何正确使用和配置这个库对于提升.NET应用的调试...

    SSH中Struts2所需基本jar包

    10. **slf4j-api.jar**和相应的实现(如logback-classic.jar):简单日志门面,用于统一日志处理。 此外,还有其他一些库,如Jakarta Commons Logging、commons-fileupload、commons-io等,它们为Struts2提供了上传...

    Java Web项目-网上淘书吧.zip

    在"网上淘书吧",它们可能用于实现URL重写、统一日志记录等功能。 8. **框架应用**:虽然未明确提及,但项目可能使用了Spring、Struts或Hibernate等框架来简化开发和增强功能。Spring可以提供依赖注入和AOP(面向切...

    ssh三大框架连用所需要的jar包

    5. **日志系统统一**:虽然每个框架都有自己的日志抽象层,但为了统一日志格式和方便维护,建议使用一套统一的日志系统,如将所有的日志输出都重定向到Log4j。 6. **开发模式选择**:根据项目的复杂度和团队的技术...

Global site tag (gtag.js) - Google Analytics