请问:
1,用spring AOP+log4j是不是一个不错的选择
2,日志存放到哪里,如果是文件如何指定路径,如果是DB有如何配置
3,最好是一个完整的例子,包括配置文件谢谢了

解决方案 »

  1.   

    给你一个配置文件吧。log4j.rootLogger=INFO,out,out2log4j.appender.out=org.apache.log4j.ConsoleAppender
    log4j.appender.out2=org.apache.log4j.RollingFileAppender
    log4j.appender.out2.File=E:/Prj2009/crm/mylog.txt
    log4j.appender.out2.MaxFileSize=1mb
    log4j.appender.out2.MaxBackupIndex=1#log4j.appender.out.layout=org.apache.log4j.SimpleLayout
    log4j.appender.out.layout=org.apache.log4j.PatternLayout
    log4j.appender.out.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %m%n log4j.appender.out2.layout=org.apache.log4j.PatternLayout
    log4j.appender.out2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %m%n
      

  2.   

    请问:这位大哥,是不是,在AOP(切面或者adviser),反正就是切入代码里
    加入:logger.debug("xxx")之类的,就可以记入到E:/Prj2009/crm/mylog.txt 
    文件了吧
      

  3.   

    http://blog.chinaunix.net/u/20045/showart_1386311.html
      

  4.   

    public class A {
    private static final Logger logger = Logger.getLogger(A.class);
    public void xxx() {
    logger.debug("错误");
    }
    }
      

  5.   

    1. 引入spring aop 的 几个 jar包,可以在网上搜一下
    2. 注解,或者xml配置
    3. ioc 定义日志处理类
    4. 定义aop:aspect ref指定到日志处理类,注意切入点和expression的写法
    5. 返回一般有 after-return, around, before,return等 method 指定到日志处理类的具体方法
    6. 在日志类里掉用log4j的功能
      

  6.   

    大哥,我按你的方式做了一下,结果还是不对
    配置文件log4j.rootLogger=INFO,out,out2 log4j.appender.out=org.apache.log4j.ConsoleAppender 
    log4j.appender.out2=org.apache.log4j.RollingFileAppender 
    log4j.appender.out2.File=D:/workspace/spring-aop-log/mylog.txt 
    log4j.appender.out2.MaxFileSize=1mb 
    log4j.appender.out2.MaxBackupIndex=1 #log4j.appender.out.layout=org.apache.log4j.SimpleLayout 
    log4j.appender.out.layout=org.apache.log4j.PatternLayout 
    log4j.appender.out.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p %l - %m%n log4j.appender.out2.layout=org.apache.log4j.PatternLayout 
    log4j.appender.out2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %l - %mjava代码 //切面类
    @Aspect 
    public class MyInterceptor0 {
    private static final Log log = LogFactory.getLog(PersonServiceBean.class);

    @Pointcut("execution (* cn.itcast.service.impl.PersonServiceBean0.*(..))")
    private void anyMethod(){}//声明一个pointcut

    @Before("anyMethod()  && args(name)")//增加pointcut参数限制
    public void doAccessCheck(String name){
    System.out.println("before advice:"+name);
    log.debug("log4j-debug执行doAccessCheck");
    log.error("log4j-err执行doAccessCheck");
    System.out.println("before advice end");
    }
    } //PersonServiceBean0类的方法
    public void save(String name) {
    System.out.println("我是save()");
    }

    /**执行结果
    before advice:22
    2009-12-30 1:27:10 cn.itcast.service.MyInterceptor0 doAccessCheck
    严重: log4j-err执行doAccessCheck
    before advice end
    我是save()
            */
    输出的结果,显示AOP起作用了,但是mylog.txt还是空的
      

  7.   

    log4j.rootLogger=debug,A1,R#console output
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
     log4j.appender.A1.layout=org.apache.log4j.PatternLayout
     
    l
    #File output
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=${catalina.home}/logfile.log
    #layout
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    #maxFileSize is 500kb
    log4j.appender.R.MaxFileSize=500KB
    #backup 1
    log4j.appender.R.MaxBackupIndex=1
    log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%nlog4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
      

  8.   

    ${catalina.home}
    到tomcat 目录下。你也可以自己设
      

  9.   

    对应log4j.properties的log4j.rootLogger=INFO,out,out2 好像是应该用log.info("log4j-debug执行doAccessCheck");
    不应该用log.debug("log4j-debug执行doAccessCheck");
      

  10.   

    谢谢,各位
    我错在这里了
    private static final Log log = LogFactory.getLog(PersonServiceBean.class);
    这是commons-logging的Log,不是log4j的
    后来,下了个视频看了看,log4j很好很强大