想在项目里面使用log4j做日志的记录,但现在需要写日志的类很多,而且写日志的代码都是雷同的,所以就利用spring的aop来完成写日志的任务。
首先,需要将log4j先配置好在web.xml中加入解析器servlet的配置
之后,由于我项目当中配置了大量的service类,类名都以Service结尾,为了方便配置使用spring当中的BeanNameAutoProxyCreator类进行aop配置。
在spring配置文件中配置如下:
再来就是写Advice类了也就是配置中的LoggerAdvice,代码如下:
首先,需要将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);
}
}