spring aop 日志

前提:已经部署spring(接上篇:spring 注解 容器的注入注出)

一:新增依赖包

  1:log4j-1.2.9.jar(日志包)

  2:spring-aspects-4.1.6.RELEASE.jar(spring包中存在)

  3:aopalliance-1.0.jar(不在spring包中)

  4:aspectjweaver-1.7.3.jar(不在spring包中)

二:新增切面类(aop.Log4jHandlerAOP)

三:新增log4j.properties(放入scr目录下)

四:修改applicationContext.xml

  1:beans属性新增:xmlns:aop="http://www.springframework.org/schema/aop"

  2:beans属性(xsi:schemaLocation)新增:http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

  3:配置“切面”与“切入点”

ps:

  1:applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    <context:annotation-config />
    <!-- 根据注解扫描类放入容器  -->
    <context:component-scan base-package="dao,service,servlet" />
    <!--升级: 注解,自动注入 -->
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />

    <bean id="log4jHandlerAOP" class="aop.Log4jHandlerAOP"></bean>
    <aop:config>
        <aop:aspect id="logAspect" ref="log4jHandlerAOP">
            <aop:pointcut id="logPointCut" expression="execution(* service.*.* (..))" />
            <aop:around method="RecordLog" pointcut-ref="logPointCut" />
        </aop:aspect>
    </aop:config>

</beans>

  2:Log4jHandlerAOP.java

package aop;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.stereotype.Component;

@Component("log4jHandlerAOP")
public class Log4jHandlerAOP {
    Logger logger;
    public Object RecordLog(ProceedingJoinPoint pjp) throws Throwable {
        logger = Logger.getLogger(Log4jHandlerAOP.class);
        String className = pjp.getTarget().getClass().getSimpleName();
        String methodName = pjp.getSignature().getName();
        String userName = "豪1817";
        StringBuffer sb = new StringBuffer();
        sb.append("userName: " + userName);
        sb.append(" className: " + className);
        sb.append(" methodName: " + methodName);
        logger.info(sb.toString());
        Object obj = pjp.proceed();
        return obj;
    }
}

  3:log4j.properties

### set log levels ###
log4j.rootLogger = debug,stdout,D ,E

### 输出到控制台     ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 输出到日志文件 按天创建日志     ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = C:/D/log/logs/logPerDay.log
log4j.appender.D.Append = true
## 输出DEBUG级别以上的日志
log4j.appender.D.Threshold = DEBUG
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

### 输出到日志文件 按大小创建日志     ###
log4j.appender.E=org.apache.log4j.RollingFileAppender
log4j.appender.E.File=C:/D/log/logs/log.log
log4j.appender.E.MaxFileSize=50KB
log4j.appender.E.MaxBackupIndex=5
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

  

时间: 2024-10-11 19:35:07

spring aop 日志的相关文章

spring aop 日志 注解

前提:接上篇:spring aop 日志 一:无新增依赖包 二:修改切面类(aop.Log4jHandlerAOP.java) 三:修改applicationContext.xml 1:扫描注入容器新增aop(base-package="dao,service,aop") 2:支持AOP注解(<aop:aspectj-autoproxy/>) 3:去除传统AOP的配置以及切面类的注入 ps: 1:applicationContext.xml <?xml version

Spring AOP日志管理

AOP的介绍 AOP(Aspect-OrientedProgramming,面向方面编程) AOP的几个概念 1.切面(Aspect):切面就是一个关注点的模块化,如事务管理.日志管理.权限管理等: 2.连接点(Joinpoint):程序执行时的某个特定的点,在Spring中就是一个方法的执行: 3.通知(Advice):通知就是在切面的某个连接点上执行的操作,也就是事务管理.日志管理等: 4.切入点(Pointcut):切入点就是描述某一类选定的连接点,也就是指定某一类要织入通知的方法: 5.

Spring Aop 日志拦截应用

近期,一个小伙伴遇到了此需求.要解决的问题就是: 记录用户在系统的操作,通过注解来灵活控制.  注解可以对方法进行修饰,描述.  后面会将注解上描述以及方法被调用时入参记录到数据库. 同时还需要对不同的操作进行分类(插入,修改,查看,下载/上传文件之类的),记录用户,时间以及IP,客户端User-agent . 我在这里将部分实现写了出来,实际在项目中可以直接参照进行修改就可以满足以上功能. 开发环境:W7 + Tomcat7 + jdk1.7 + Mysql5 框架:spring,spring

Spring AOP日志实现(一)

前置通知:获取访问的类,访问的方法,带参数和不带参数的 日志表信息描述字段: 获取访问时长: 原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10847190.html

Spring AOP进行日志记录

在java开发中日志的管理有很多种.我一般会使用过滤器,或者是Spring的拦截器进行日志的处理.如果是用过滤器比较简单,只要对所有的.do提交进行拦截,然后获取action的提交路径就可以获取对每个方法的调用.然后进行日志记录.使用过滤器的好处是可以自己选择性的对某一些方法进行过滤,记录日志.但是实现起来有点麻烦. 另外一种就是使用Spring的AOP了.这种方式实现起来非常简单,只要配置一下配置文件就可以了.可是这种方式会拦截下所有的对action的每个操作.使得效率比较低.不过想做详细日志

spring aop环绕通知记录应用的日志

使用的框架是spring mvc+spring 最近想利用spring aop的环绕通知来处理web的日志问题,总的来讲,如果在controller层做切入,则难监控实际运行情况,在service层做切入,则只能监控到service层的情况,通过捕捉service抛出的异常来记录日志,对于目前本人应用而言,已经足够了,先将记录如下: 代码: @Component @Aspect public class ExceptionLog { /** * 61 * 环绕通知需要携带ProceedingJo

spring aop简单日志实例

转载自:http://www.blogjava.net/laoding/articles/242611.html 一直就用spring的IOC,遗憾spring的另一重要组成部分AOP却没用过,所以近几天抽空研究了下AOP,学了些东西,在这里记录下spring2.0的aop配置,以一个简单的记录日志的实例来说明,先介绍下用XMLSchema来配置,下一篇介绍annotation配置,废话不多说,开始吧先新建个web工程,将spring的包加进去,为方便就把全部的jar包加进去. 先来看个接口,很

spring AOP自定义注解方式实现日志管理

转:spring AOP自定义注解方式实现日志管理 今天继续实现AOP,到这里我个人认为是最灵活,可扩展的方式了,就拿日志管理来说,用Spring AOP 自定义注解形式实现日志管理.废话不多说,直接开始!!! 关于配置我还是的再说一遍. 在applicationContext-mvc.xml中要添加的 <mvc:annotation-driven />     <!-- 激活组件扫描功能,在包com.gcx及其子包下面自动扫描通过注解配置的组件 -->     <conte

spring AOP切面日志 拦截方法中有同名方法问题

代码: @ResponseBody @RequestMapping("/login.do") public Json login(SysUserPM sysUserPM, HttpSession session) { Json j = new Json(); SysUserPM sysUser = sysUserServiceI.doLogin(sysUserPM); if (sysUser != null) { System.out.println("后台用户登录成功!&q