通过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, errorlogfilelog4j.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%nlog4j.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%nlog4j.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%nlog4j.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
转载于:https://www.cnblogs.com/xdlaoliu/p/6869540.html
通过AOP引入Log4j相关推荐
- 在spring引入log4j
在spring中使用log4j 引入log4j软件包 配置log4j属性 加载log4j配置文件 默认加载 手动加载 使用logger 本文的整体代码结构是在已经引入spring基本应用的前提下,在s ...
- springMVC,aop管理log4j,把当前session信息和错误信息打印到日志
((((其实还是不太理解aop的正真意义但是这样可以实现想要的了,我的感觉是执行一个方法时首先通过filter( 这个fiter可以不配置,之所以要他是因为在aop切入的方法session消失了,我们 ...
- Spring AOP源码解析(三)—— AOP引入(续)
目录 AbstractAspectJAdvisorFactory AspectJAnnotation ReflectiveAspectJAdvisorFactory getAdvisors getAd ...
- Spring AOP源码解析(二)—— AOP引入
目录 配置类 AopAutoConfiguration AspectJAutoProxyingConfiguration ClassProxyingConfiguration @EnableAspec ...
- 【spring】AOP引入的使用与源码分析
通知是对目标对象方法的增强,而引入可以动态为目标对象实现新的接口,实现对类的增强. 引入的使用 目标类 public class DogService {public void hi() {Syste ...
- 《Spring揭秘》读书笔记 2:Spring AOP
7 一起来看AOP 2009年8月,<一起来看流星雨>开播. 2009年9月,<Spring揭秘>出版. 7.1 AOP核心概念 AOP AOP全称为Aspect-Orient ...
- 使用Log4j进行日志操作(牛小浩)不错的
使用Log4j进行日志操作 一.Log4j简介 (1)概述 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是 ...
- log4j的使用方法
首先是引入log4j的jar包,在src目录下创建log4j.properties文件 package com.coderdream.log4j; import org.apache.log4j.Lo ...
- SSM框架下结合 log4j、slf4j打印日志
首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--><dependency><groupId>org.slf4j&l ...
最新文章
- DrawerLayout
- 大咖分享会 | 百度首次揭秘如何构建用户画像与移动统计
- 二元运算符的运算符重载
- linux 离线 svn插件安装,Eclipse离线安装svn插件
- 一颗明亮的火球从天空划过
- 配置linux普通用户无密码执行sudo命令
- PCRE demo【转】
- 前端怎么做接口签名验证 -baijiahao_阿里一面:如何保证API接口数据安全?
- vue+IOS9页面白屏
- 点分十进制IP转换为32位二进制IP,带合法性校验
- matlab 一维 平滑,MATLAB中数据平滑处理
- rtk采点后如何导入cad_CAD图片导入:如何对JPG图片进行描图
- 什么是 Web 应用防火墙(WAF)?
- 微信小程序从零开始开发步骤(三)
- SOF文件生成JIC文件
- eclipse32位和64位的区别
- Example 3, 4 of variadic templates
- SQLServer截取字符串常用函数
- wi ndows自带截图工具,不想装截图工具?这里有 5 个 Windows 自带截图小技巧
- k8s==安装仪表盘,用仪表盘部署nginx
热门文章
- python函数解读_通过7个Python函数来解释区块链
- 从linux使用sz命令下载大于4g的文件到windows
- 当你使用R安装包出现rdb is corrupt问题的时候
- R语言生信作图代码集合大全
- samba 开通_LINUX开启SAMBA服务
- SpringMVC教程
- static 结构体_C++基础-static
- 本博客体系系列篇(一)
- Windows10下VB6.0开发——利用PictureBox控件实现数据点实时绘图
- android二级菜单ui,巧用PopupMenu实现NavigationView的二级子菜单