当前位置: 首页 > 工具软件 > M-Aop > 使用案例 >

LogBack--AOP的延展

顾恺
2023-12-01

在Spring项目中的另外一个核心便是AOP,那么什么是AOP呢?

我们通常开发都是OOP流程化的开发,上层向下发送请求,底层向上提供服务。但是有些服务或者功能却是需要嵌套在某些服务中,或者嵌套在多个服务中, 那么这个时候就需要用到AOP切面了。

在Spring最初用到的AOP中是通过:

 <aop:config>
 <aop:aspect id="time" ref="timeHandler">//切入的服务
 <aop:pointcut id="addAllMethod"
expression="execution(*com.xrq.aop.HelloWorld.*(..))" />//处理的方法
 <aop:before method="printTime" pointcut-ref="addAllMethod" />//这个点的位置,在哪个方法的先后
 <aop:after method="printTime" pointcut-ref="addAllMethod" />
 </aop:aspect>
 </aop:config>

来进行手动的配置:
将服务的启动书写成 timeHandler类,将需要代理维护的切入点给对应维护到进来,以后再执行到被代理的点则会根据维护的的先后对应执行.

 

而在spring+springmvc中,为了迎合生产的效率,大部分使用动态代理<aop:aspectj-autoproxy/>;并维护相关的参数,通过对需要切入服务维护成@aspect组件;

而在很多的项目中切入服务主要用于日志服务,对于此类的操作,日志已经有很多现场的框架因此,我们使用jar包导入,并配置好相关log.proprties文件,可以直接调用!在需要用到的页面使用:

public static Logger logger= LoggerFactory.getLogger(TokenCache.class);调用即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <property name="LOG_HOME" value="${CATALINA_HOME}/logs"></property><!--设置线上的地址-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender"><!--打印到Tomcat的日志-->
        <encoding>UTF-8</encoding>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%n</pattern><!--打印的日志格式-->
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level><!--筛选出大于debug级别的日志 DEBUG-->
        </filter>
    </appender>

    <appender name="mmall" class="ch.qos.logback.core.rolling.RollingFileAppender"><!--日志滚动下载-->
        <!--<File>d:/mmalllog/mmall.log</File>-->
        <!--<File>/developer/apache-tomcat-7.0.73/logs/mmall.log</File>--><!--存放日志文件的路径-->
        <File>${LOG_HOME}/logs/mmall.log</File><!--存放日志文件的路径-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--<fileNamePattern>/developer/apache-tomcat-7.0.73/logs/mmall.log.%d{yyyy-MM-dd}.gz</fileNamePattern>-->
            <fileNamePattern>${LOG_HOME}/logs/mmall.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
            <append>true</append>
            <maxHistory>10</maxHistory><!--存放历史(天数)-->
        </rollingPolicy>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%n</pattern><!--存储起来日志的格式-->
        </encoder>
    </appender>


    <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<File>d:/mmalllog/error.log</File>-->
        <File>/developer/apache-tomcat-7.0.56-windows-x64/apache-tomcat-7.0.56/logs/error.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/logs/error.log.%d{yyyy-MM-dd}.gz</fileNamePattern>
            <!--<fileNamePattern>d:/mmalllog/error.log.%d{yyyy-MM-dd}.gz</fileNamePattern>-->
            <append>true</append>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{HH:mm:ss.SSS}][%p][%c{40}][%t] %m%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter"><!--筛选想要打印的日志-->
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <logger name="com.mmall" additivity="false" level="INFO" >
        <appender-ref ref="mmall" /><!--打印到哪里-->
        <appender-ref ref="console"/><!--打印到什么地方-->
        <appender-ref ref="error"/><!--打印到什么地方-->
    </logger>



    <!-- geelynote mybatis log 日志 -->

    <logger name="com.mmall.dao" level="DEBUG"/><!--查看mybati配置Dao层的日志为了方便查看打印出来的日志如何-->

    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" >
    <appender-ref ref="console"/>
    </logger>

    <logger name="java.sql.Connection" level="DEBUG">
    <appender-ref ref="console"/>
    </logger>
    <!--<logger name="java.sql.Statement" level="DEBUG">-->
    <!--<appender-ref ref="console"/>-->
    <!--</logger>-->

    <!--<logger name="java.sql.PreparedStatement" level="DEBUG">-->
    <!--<appender-ref ref="console"/>-->
    <!--</logger>-->


    <root level="DEBUG"><!--根节点日志水平设置以及相关打印-->
        <appender-ref ref="console"/>
        <appender-ref ref="error"/>
    </root>

</configuration>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 类似资料: