美文网首页程序员
SpringMVC中log4J与AOP

SpringMVC中log4J与AOP

作者: 云勺 | 来源:发表于2017-12-13 11:55 被阅读0次

    项目中需要将service中的类方法的调用过程,使用log4j日志记录。

    service中的类和方法都很多,不可能在每个类中单独添加log4j日志记录的功
    能,因此我们在这里使用AOP的思想进行横向切面。

    以service类中的方法为切入点,通过AOP在方法调用前后使用log4j输出日志,内容包括正在调用的类和方法名。

    在配置过程中,笔者碰到了一些或大或小的细节上的问题,在此作为记录。

    首先是AOP的配置上,我们有两种选择,一是通过XML配置,二是通过注解。

    XML配置可以通过以下示例:

    XML配置.png

    则对应的Aspect方法可以不用使用@Aspect、@Before和@After注解。

    如果使用注解方式,则在XML配置文件中,只需要一行配置,开启自动代理功能即可:

    自动代理.png

    此时,对应的Aspect方法可以如下示例:


    Aspect1.png

    其次,是Spring配置文件所属域上的坑,在这里配置的AOP的XML文件,如果需要成功执行,需要在

    web.xml文件中,将此XML配置文件加入到Servlet-Context中,而不是Spring-Context中,示例如下:


    全局context.png

    上图是配置全局的spring上下文,但是aop配置文件在这里不能成功。


    Servlet的context.png

    我们需要把aop的配置加载,放在servlet的初始化上下文中。

    上述工作对于AOP的配置大致完成了,我们接下来需要配置log4j。在工程中,如果没有log4j的配

    置,我们可以直接在src目录下创建一个log4j.properties文件;如果需要自定义此文件,可以在

    web.xml中配置log4j,如:


    web.xml中配置log4j

    log4j.properties文件中可以参考下列配置,前者是详细的注解和参考,后者是笔者需要区分日志

    等级输出,以及需要同时输出到控制台和文件的配置:

    log4j.properties详解
    ### set log levels ###
    log4j.rootLogger = INFO, console, I, W, E
    ### 输出信息到控制台 ###
    log4j.appender.console = org.apache.log4j.ConsoleAppender
    log4j.appender.console.Target = System.out
    log4j.appender.console.layout = org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} class:%c method:%l%n%m%n
    ### 输出INFO 级别以上的日志 ###
    log4j.appender.I = org.apache.log4j.RollingFileAppender
    #log4j.appender.W.File =${scheduleProject}WEB-INF/logs/schedule.log
    ###输出到指定文件###
    log4j.appender.I.File = e://logs/lof4j_info.log
    log4j.appender.I.Append = true
    log4j.appender.I.Threshold = INFO
    log4j.appender.I.MaxFileSize = 50000KB
    log4j.appender.I.layout = org.apache.log4j.PatternLayout
    log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    ### 输出WARN 级别以上的日志 ###
    log4j.appender.W = org.apache.log4j.RollingFileAppender
    #log4j.appender.W.File =${scheduleProject}WEB-INF/logs/schedule.log
    ###输出到指定文件###
    log4j.appender.W.File = e://logs/lof4j_warn.log
    log4j.appender.W.Append = true
    log4j.appender.W.Threshold = WARN
    log4j.appender.W.MaxFileSize = 50000KB
    log4j.appender.W.layout = org.apache.log4j.PatternLayout
    log4j.appender.W.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    #### 输出DEBUG 级别以上的日志 ###
    #log4j.appender.D = org.apache.log4j.RollingFileAppender
    ##log4j.appender.D.File =${scheduleProject}WEB-INF/logs/schedule.log
    ####输出到指定文件###
    #log4j.appender.D.File = e://logs/lof4j_error.log
    #log4j.appender.D.Append = true
    #log4j.appender.D.Threshold = DEBUG
    #log4j.appender.D.MaxFileSize = 50000KB
    #log4j.appender.D.layout = org.apache.log4j.PatternLayout
    #log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    ### 输出ERROR 级别以上的日志 ###
    log4j.appender.E = org.apache.log4j.RollingFileAppender
    #log4j.appender.E.File = ${scheduleProject}WEB-INF/logs/schedule.log
    log4j.appender.E.File = e://logs/lof4j_error.log
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR
    log4j.appender.E.MaxFileSize = 50000KB
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %l\:%c\:%t\:%r ] - [ %p ]  %m%n
    

    最后,我们运行工程,使用该方法,查看AOP结果:


    控制台.png 文件中.png

    相关文章

      网友评论

        本文标题:SpringMVC中log4J与AOP

        本文链接:https://www.haomeiwen.com/subject/cleaixtx.html