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>
分享到:
相关推荐
在Spring项目中,引入AOP(面向切面编程)是一种常见的做法,主要用于实现代码的解耦和增强功能,比如统一日志打印。AOP允许我们在不修改原有业务代码的情况下,插入新的行为,如记录日志、事务管理、权限控制等。在...
在Spring Boot应用中,AOP(面向切面编程)是一种强大的工具,用于实现代码的解耦和模块化,尤其适用于处理横切关注点,如日志记录、事务管理、安全控制等。本教程将深入探讨如何利用Spring Boot的AOP特性来实现日志...
【SpringBoot学习笔记——AOP全局统一日志管理】 在软件开发中,日志记录是一项至关重要的任务,它有助于追踪操作记录、系统监控以及满足审计需求。SpringBoot作为一个流行的Java微服务框架,提供了AOP(面向切面...
3. **统一日志**: - SpringBoot整合Logback或Log4j等日志框架,配置统一的日志格式和级别。 - 使用AOP(面向切面编程)实现全局日志记录,通过@Aspect注解定义一个切面类,拦截所有方法调用,记录方法的入参、出...
这通常通过AOP(面向切面编程)来实现,比如使用Spring AOP的切面来拦截方法的调用,然后在进入和离开方法时记录日志。在方法的入口,记录请求参数;在方法执行后,记录响应结果和处理耗时,同时可以通过`...
通过使用Spring Boot框架结合AOP技术,我们可以实现Web请求的统一日志记录,从而提高代码的可维护性和可读性。本文提供了一个完整的示例代码,供读者参考和学习。 知识点: 1. Spring Boot框架的使用 2. AOP...
这个库提供了一个简单的接口,可以适配多种日志实现,如log4j、java.util.logging等,帮助开发者统一日志处理。 在实际开发中,这些jar包将被添加到项目的类路径中,以便于使用Spring框架的各种功能。例如,`spring...
- **日志配置**:配置log4j,统一日志输出格式和级别,便于后续调试和监控。 通过以上步骤,我们可以看到Spring框架与Struts和Hibernate的整合不仅可以极大地提升Web应用的开发效率,还能有效地管理各个层次的...
- 日志集成:Quartz有自己的日志系统,但我们可以将其与Spring的日志框架(如Log4j或Logback)集成,统一日志输出。 总结来说,Quartz和Spring的整合提供了一种高效、灵活的任务调度方式,使得我们可以充分利用...
commons-logging-1.1.1.jar是日志工具,帮助我们在项目中统一日志处理。而commons-fileupload-1.2.1.jar则用于处理HTTP请求中的文件上传。aopalliance-1.0.jar是AOP联盟的库,它是多个AOP框架之间的兼容层,使得它们...
- **日志冲突**:SSH框架都内置了日志框架,可能会引起日志冲突,需要统一日志配置。 - **资源泄漏**:不正确关闭数据库连接或Session,可能导致资源泄漏,需要确保在操作完成后及时释放。 为了解决这些问题,...
5. **日志格式化**:统一日志格式,便于日志分析工具解析。 6. **异步日志**:避免日志记录影响主线程的执行效率,可以使用异步方式记录日志。 在实际应用中,我们可能还需要结合具体的需求,如`MDC(Mapped ...
5. 其他可能包含的库:如`commons-logging`,`log4j`等日志处理库,以及`slf4j`这样的日志抽象层,便于统一日志管理。 在SSH开发中,通常步骤如下: 1. 配置Hibernate:在`hibernate.cfg.xml`中配置数据库连接信息...
统一日志实现,避免配置冲突。 9. **Struts2拦截器问题**: - 拦截器配置错误,或者自定义拦截器与SSH框架的内置拦截器冲突。检查struts-default.xml和struts-plugin.xml中的拦截器配置。 10. **异常处理**: - ...
如`commons-logging.jar`用于日志记录,`log4j.jar`提供更高级的日志服务,`commons-lang3.jar`提供常用的字符串处理和集合操作方法,`slf4j-api.jar`和`slf4j-log4j12.jar`是简单日志门面,用于统一日志接口。...
总之,Common.Logging.dll是C#开发中用于统一日志记录的关键组件,它在Nhibernate和Spring.NET等框架中发挥着重要作用,帮助开发者实现更高效、灵活的日志管理。了解如何正确使用和配置这个库对于提升.NET应用的调试...
10. **slf4j-api.jar**和相应的实现(如logback-classic.jar):简单日志门面,用于统一日志处理。 此外,还有其他一些库,如Jakarta Commons Logging、commons-fileupload、commons-io等,它们为Struts2提供了上传...
在"网上淘书吧",它们可能用于实现URL重写、统一日志记录等功能。 8. **框架应用**:虽然未明确提及,但项目可能使用了Spring、Struts或Hibernate等框架来简化开发和增强功能。Spring可以提供依赖注入和AOP(面向切...
5. **日志系统统一**:虽然每个框架都有自己的日志抽象层,但为了统一日志格式和方便维护,建议使用一套统一的日志系统,如将所有的日志输出都重定向到Log4j。 6. **开发模式选择**:根据项目的复杂度和团队的技术...