使用Before通知的形式实现

spring的AOP实现日志输出

//代理类

package com.gc.action;

import java.lang.reflect.Method;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.springframework.aop.MethodBeforeAdvice;

public class LogBefore implements MethodBeforeAdvice{
 private Logger logger = Logger.getLogger(this.getClass().getName());
 public void before(Method method,Object[] args,Object target)throws Throwable{
  logger.log(Level.INFO,args[0]+" 开始审核数据...");
 }
}

 

//接口1

package com.gc.impl;

public interface TimeBookInterface {
 //负责具体的业务逻辑
 public void doAuditing(String name);
}


//实现接口1的类

package com.gc.action;

import com.gc.impl.TimeBookInterface;

public class TimeBook implements TimeBookInterface {

 public void doAuditing(String name) {
  System.out.println(name + " 正在审核...");

 }

}


//配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: beans1.xml,v 1.3 2006/08/20 19:08:40 jhoeller Exp $ -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
 <bean id="logBefore" class="com.gc.action.LogBefore" />
 <bean id="timeBook" class="com.gc.action.TimeBook" />
 
 <bean id="logBeforeAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  <property name="advice">
   <ref bean="logBefore"/>
  </property>
  <!-- 指定被代理类中的doAuditing方法 -->
  <property name="patterns">
   <value>.*doAuditing.*</value>
  </property>
 </bean>
 
 <bean id="logProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyInterfaces">
   <value>com.gc.impl.TimeBookInterface</value>
  </property>
  <property name="target">
   <ref bean="timeBook"/>
  </property>
  <!-- 指定代理类  -->
  <property name="interceptorNames">
   <list>
    <value>logBeforeAdvisor</value>
   </list>
  </property>
 </bean>
 
</beans>

 

//log4j.properties

log4j.rootLogger=DEBUG,stdout,R

log4j.logger.org=ERROR, A1

log4j.logger.com.gc.action=DEBUG,A2

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=org.log
log4j.appender.A1.MaxFileSize=500KB
log4j.appender.A1.MaxBackupIndex=50
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} - [%p] [%C{1}] - %m%n


log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=gc.log
log4j.appender.A2.MaxFileSize=500KB
log4j.appender.A2.MaxBackupIndex=50
log4j.appender.A2.Append=true
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{ISO8601} - [%p] [%C{1}] - %m%n

#--------------------stdout--------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n

#--------------------R--------------------------------
#log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#this log file will be stored in web server's /bin directory,modify to your path which want to store.
log4j.appender.R.File=gf.log
#log4j.appender.R.datePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.R.datePattern='.'yyyy-MM-dd
log4j.appender.R.append=true
## Keep one backup file
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
#[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

 

//测试main函数

package com.gc.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.gc.impl.FinanceInterface;
import com.gc.impl.TimeBookInterface;

public class TestHelloWorld {
 public static void main(String[] args){
  //通过ApplicationContext获取XML
  ApplicationContext actx = new FileSystemXmlApplicationContext("config.xml");
  TimeBookInterface timeBookProxy = (TimeBookInterface)actx.getBean("logProxy");
  timeBookProxy.doAuditing("张三");
 }
}

 


运行结果:

[INFO ] 2009-11-10 22:38:30 com.gc.action.LogBefore - 张三 开始审核数据...
张三 正在审核...

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值