zoukankan      html  css  js  c++  java
  • 通过AOP引入Log4j

    AOP 面向切面的编程

    要明确下面几个概念

    切面(Aspect):用于组织多个增强处理Advice,Advice放在切面中定义;

    增强处理(Advice):切入点处执行增强处理

    连接点(Joinpoint):程序执行过程中的点,如方法调用,异常抛出

    切入点(Pointcut):可以插入增强处理的连接点


    步骤:

    1. Beans.xml中配置,启动@AspectJ支持

    <context:component-scan base-package="com.jason.bookparadise.aspect">
        <context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/>
    </context:component-scan>
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

    2. 配置切面类,使用@Aspect

    @Aspect
    public class TestAspect {
    
        @Before("execution(* com.jason.bookparadise.service.TestService.*(..))")
        public void testBefore(){
            System.out.println("Test AOP Before Run");
        }
    
    }

    3. 定义增强处理

    @Before,@After,@Around ("execution(* org.crazyit.app.service.impl.*.*(..)")

    @AfterReturning (returning="rvt", pointcut="execution(* org.crazyit.app.service.impl.*.*(..)")

    @AfterThrowing (throwing="ex", pointcut="* org.crazyit.app.service.impl.*.*.(..)")

    可以通过JoinPoint来获取参数

    4. 定义切入点

    可以通过切面类对切入点重命名

    @Aspect
    public class SystemArchitecture{
      @Pointcut("execution(* org.crazyit.app.service.impl.*.*(..))")
      public void myPoint(){}        
    }

    调用时

    pointcut="SystemArchitecture.myPointcut()"

    实际应用中可以把所有的切点集中写到一个类中。


    Log4j配置

    Log分为root log和自定义log两种,Root log log4j.rootLogger=stdout, logfile, errorlogfile, 自定义log edit_delete_log.

    关于Log文件的配置博文 http://www.cnblogs.com/ITtangtang/p/3926665.html 讲的很详细,可以参照。

    private static Log logger = LogFactory.getLog("edit_delete_log");
    logger.info(userid + " delete Book" + bookid + " " + rvt);
    # Configure logging for testing: optionally with log file
    log4j.rootLogger=stdout, logfile, errorlogfile
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Append = true
    log4j.appender.stdout.Threshold = WARN
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.logfile=org.apache.log4j.FileAppender
    log4j.appender.logfile.File=F:/BookParadise/Logs/root.log
    log4j.appender.logfile.Append = true
    log4j.appender.logfile.Threshold = WARN
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.appender.errorlogfile=org.apache.log4j.FileAppender
    log4j.appender.errorlogfile.File=F:/BookParadise/Logs/runerror.log
    log4j.appender.errorlogfile.Append = true
    log4j.appender.errorlogfile.Threshold = ERROR
    log4j.appender.errorlogfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.errorlogfile.layout.ConversionPattern=%d %p [%c] - %m%n
    
    log4j.logger.edit_delete_log = DEBUG, loglevel
    log4j.appender.loglevel=org.apache.log4j.FileAppender
    log4j.appender.loglevel.File=F:/BookParadise/Logs/edit_delete.log
    log4j.appender.loglevel.layout=org.apache.log4j.PatternLayout
    log4j.appender.loglevel.layout.ConversionPattern=%d %p [%c] - %m%n
  • 相关阅读:
    C语言数组和字符串函数
    C语言控制语句
    C语言输入输出函数
    C语言运算符
    C语言数据类型
    嵌入式开发基础知识
    VI编辑器的使用
    Linux文件系统和目录相关命令
    前段之必学(转载)
    26个高效工作的小技巧(转载)
  • 原文地址:https://www.cnblogs.com/xdlaoliu/p/6869540.html
Copyright © 2011-2022 走看看