`
冰火特蕾莎
  • 浏览: 20827 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

無侵込式菂日志記錄

阅读更多

相信大家茬頊目仲苚菂日志記彔都是基于AOP的方式吧。偶也是,用了spring提供的基于AspectJ的切面来完成的日志记录。但是日志记录的信息除记录时间外仅局限于记录类、方法、参数和返回值,提供不了多少有实用价值的业务信息。

 

大家一般是怎么记录业务信息的呢?直接在业务方法里调log的API?例如

 

log.info(userid+"录入一篇新的公文,公文id为:"+doc.id);

这样的话,业务和日志又绑定到一块去了。

 

偶后来所想的方法呀,是这样的,通过与类名相同的配置文件的方式来记录日志。 

例如,可以在

com.xxx.businessobject.Business1.java的同级目录下,放置一个

com.xxx.businessobject.Business1.log.properties文件,文件内容为

addNewDoc=${user.id}插入了一个新的文档,文档id为${param[0].id}
deleteDoc=${userid}删除了${result.num}个文档

 

其中${}里面的内容是类似于EL表达式的字符串,可以做几个简单的约定

${user}:代表当前操作用户

${user.id}:代表去当前操作用户的id属性

${param[0]}:代表第1个参数

${param[1].name}:代表第2个参数的name属性

${this.book.id}:代表当前对象的book属性的id成员变量

${result}:代表方法返回值

${result.num}:代表返回值对象的num属性。

 

这样就可以对代码无侵入式的业务级的日志记录了

 

当然啦,如果求方便的话,是可以不使用配置文件的哦,大家都觉得配置文件已经够多了

偶觉得用Annotation的话,看起来效果会更好

例如这样子

@Log("插入了一个新文档${params[0].id}");
public void addNewDoc(Doc doc){
  //
}

 

 

这样做日志唯一不好的地方就是,没办法更细粒度的记录日志了,例如方法里的一些临时变量的信息之类

分享到:
评论
21 楼 xixix2004 2010-01-11  
先理解什么叫无侵入式吧....
20 楼 Foxswily 2009-11-09  
把需要进一步处理的信息用log输出本身就是个有待考虑的事,既然输出的内容跟业务有关就是业务的一部分,所谓的无入侵就无从谈起了。

P.S.log4j之类的log工具为了保证性能对多线程输出是无序的,做某些分析也不太合适。
19 楼 treblesoftware 2009-11-09  
本来注解的入侵就够大了,要不是注解能提高开发效率,怀疑没有用它的理由了。

你这里还加个@ ,下面的代码明显被入侵了,还说无入侵。你这个最多算个GOOG好主意,而并不是传说中那个根本就不存在的无入侵。

@Log("插入了一个新文档${params[0].id}");  
public void addNewDoc(Doc doc){  
  //  
}  


还有,技术讨论是严谨的,搞什么火星文。
18 楼 wangdi 2009-11-08  
冰火特蕾莎 写道
egmacross 写道
用注解和直接用log4j有啥区别?

当然有区别咯,我可以在日志切面里随时替换日志的实现方式咯,用了log4j,就绑死log4j了哦,在osgi这种环境下,会出错的哦

  直接写一个logger的wrapper不就ok了??
17 楼 冰火特蕾莎 2009-11-08  
lishuaibt 写道
没意思的。。。 和直接用log4j有什么差别阿?不一样侵入代码吗?

嘿,这位哥哥是不是没有看懂啊,哪里侵入代码了,用配置文件来配置日志,对代码一点都没有影响啊
16 楼 lishuaibt 2009-11-08  
没意思的。。。 和直接用log4j有什么差别阿?不一样侵入代码吗?
15 楼 xucons 2009-11-08  
使用JMS来记录日志才是正道。
14 楼 night_stalker 2009-11-07  
upvote for mm
13 楼 wxq594808632 2009-11-07  
我等来自火星.
引用
茬頊目仲苚菂日志記彔

12 楼 jonahliu 2009-11-07  
ps:没有使用过商业的日志系统,仅仅在其站点上看过介绍。
11 楼 jonahliu 2009-11-07  
基本上不太可能。在系统出现问题时,日志要能够帮助分析人员分析系统存在的问题。而在不同的模块,不同的层级所需要的分析诊断信息不同。在一个特定的系统实现中,绑定一种特定的日志实现方式没有什么问题,况且当前也有一些日志框架可供使用。更者可以考虑购买商业的日志系统,不仅支持日志服务器,还支持多个日志服务器,日志的路由等,还有配套的日志分析工具。
10 楼 daquan198163 2009-11-07  
冰火特蕾莎 写道
kjj 写道
听过slf4j吗,简单的替换就可以,再说了,就一个日志,绑定log4j又有什么不好的!!

用过slf4j,顺带提一句,绑定log4j可是很麻烦滴哟。业务级日志,处理的方式不仅仅是输出到console或者是file或者存到db就算完事的哟。也许我需要对这些日志做其他处理呢?也许我需要发送到另外一个专门的日志服务器里呢?

不管怎么样,业务人员不应该关心日志的去向,或者说业务编写人员根本不需要知道有日志这个概念才对。
所以不应该在代码中出现日志的概念来。。。。

log4j的appender就是用来做这个的。
另外log4j的MDC也不错,可以在日志里面定制任意的参数如访问者id、ip等。
业务日志很难做到与业务代码分离(业务编写人员不知道有日志这个概念),比如你提到的“例如方法里的一些临时变量的信息之类”。
9 楼 whaosoft 2009-11-07  
shevliu 写道
拜托,别用火星文

是呀 真想找到 这火星文是根据什么 出来的
8 楼 pipilu 2009-11-06  
那点“唯一”不好的地方,实在是太不好了。
7 楼 ximenpiaohua 2009-11-06  
这样的框架我做过,感觉一般般,主要是日志的内容不好收集,有些是运行时的,有些要记录多条日志在一个业务方法中,当然有些场景应用起来还是非常OK的,最好还提供一些APPDER的实现
6 楼 zozoh 2009-11-06  
楼主的想法很不错。
如果能有办法支持本地化字符串,就更有趣了
5 楼 冰火特蕾莎 2009-11-06  
kjj 写道
听过slf4j吗,简单的替换就可以,再说了,就一个日志,绑定log4j又有什么不好的!!

用过slf4j,顺带提一句,绑定log4j可是很麻烦滴哟。业务级日志,处理的方式不仅仅是输出到console或者是file或者存到db就算完事的哟。也许我需要对这些日志做其他处理呢?也许我需要发送到另外一个专门的日志服务器里呢?

不管怎么样,业务人员不应该关心日志的去向,或者说业务编写人员根本不需要知道有日志这个概念才对。
所以不应该在代码中出现日志的概念来。。。。
4 楼 kjj 2009-11-06  
听过slf4j吗,简单的替换就可以,再说了,就一个日志,绑定log4j又有什么不好的!!
3 楼 冰火特蕾莎 2009-11-06  
egmacross 写道
用注解和直接用log4j有啥区别?

当然有区别咯,我可以在日志切面里随时替换日志的实现方式咯,用了log4j,就绑死log4j了哦,在osgi这种环境下,会出错的哦
2 楼 egmacross 2009-11-06  
用注解和直接用log4j有啥区别?

相关推荐

    苏菂:车库咖啡创业曲.docx

    【标题】:“苏菂:车库咖啡创业曲.docx” 【描述】:该文档讲述了车库咖啡的创始人苏菂从投资总监到创业者的转变过程,以及车库咖啡如何从一个普通的咖啡厅发展成为创新型孵化器的故事。 【标签】:创业, 投资, ...

    基于改进YOLOv5的行人车辆检测与识别算法研究.pdf

    行人和车辆在远距离下是计算机视觉领域中的一个重要挑战,特别是在目标检测方面。YOLOv5,即You Only Look Once的第五个版本,是一种高效且先进的实时目标检测算法,它在处理通用对象检测任务时表现出色。...

    车库咖啡:创业者的“第一站” 不怕亏本儿.docx

    车库咖啡以接纳各种初创项目为特点,尤其是那些尚未成熟甚至未成型的项目,为早期创业者提供了一个低成本的开放式办公环境。这里不仅提供舒适的座椅、适宜的照明和高速的网络,而且只需点一杯咖啡,创业者就能在这里...

    9300 SIM卡解锁

    感谢原发帖人:莪们菂纪念 原话:晚上逛XDA,无意间发现的一个解锁工具 近期LG6 LG8的rom导致很多机油机器被锁~ 目前市场流入很多欧美合约机~ 虽然是欧版,但是它是国外定制机,类似于中国联通等等合约机。国外...

    开题报告充电宝租赁管理系统 已通过开题答辩的.doc

    - 马菂. 基于线上线下混合模式的《MySQL 数据库技术与应用》课程教学改革与实践[J]. 通过以上知识点的梳理,可以看出充电宝租赁管理系统的设计与开发是一项综合性较强的项目,不仅需要深入理解相关技术,还需要...

    百川建科:2021年半年度报告.PDF

    报告中提到了“实际控制人不当控制风险”,指出邢忠桂和王菂夫妇通过天津汇鼎升科技合伙企业(有限合伙)以及直接持股,对公司拥有高度控制权,这可能导致决策过于集中,可能影响公司的治理结构和透明度。...

    基于ARIMA-TGARCH模型的中国股票指数收益率波动研究

    基于ARIMA-TGARCH模型的中国股票指数收益率波动研究,谢梦菂,王斌会,中国股票市场自开市以来已有三十多年的历史,交易制度和监管措施已经日趋完善,虽然和国外成熟的股票市场比较还是有一定的差距,

    手工整理2011-2020年各省知识产权保护水平,包含技术交易、律师人数和未侵权率三种

    关于知识产权保护水平的测度,本人参考已有文献的做法,手工整理了三种指标,样本区间 是2011-2020年全国31个省份。有需要的朋友可以使用其中一到两个,也...[1]吴超鹏,唐菂.知识产权保护执法力度、 技术创新与企业绩

    Qt实现代码编辑器

    这可以通过在`QTextEdit`中插入特殊的格式化对象(如`QTextBlockUserData`)来实现,这些对象会记录折叠状态,并在用户交互时更新视图。 自动完成功能则可以提高编码效率。可以使用`QCompleter`类来实现,它可以...

    qq呢昵称男生(3篇).doc

    “戒不掉 ní 菂好”则带有一定的幽默感,体现出对某种习惯或情感的依赖。 综合来看,这些QQ昵称不仅是网络身份的一部分,更是个人情感和性格的展现,反映出使用者的心理状态、兴趣爱好以及对生活的态度。选择合适...

    中班课件社会:等一等[宣贯].ppt

    执教者刘菂通过精心设计的活动和互动环节,帮助孩子们在成长过程中学习到基本的社会规范和礼仪。 课程的核心知识点主要包括以下几个方面: 1. 社会规范的理解:孩子们在成长过程中需要逐渐明白,不是所有的事情都...

    让人心碎到哭的网名心疼的网名.doc

    3. **网络语言与文化**:“涐菂心,涐不懂分明有几分沉痛”这样的网名,包含了网络语言的特点,如使用非标准汉字或拼音缩写来增加独特性和隐晦性。这种网络用语反映了特定时期的文化现象和社会心理。 4. **数据挖掘...

    qq名字大全女生(三篇).doc

    接着,资料中还列举了一些精品时尚的名字,例如“戒不掉 ní 菂好↘”,这类昵称通常包含个性化的符号和拼写,展现出独特与个性化的一面。同时,还有“So 丶滚吧”这样的精典网名,它带有强烈的情绪表达,可能是对...

    qq微信名字(3篇).doc

    3. **精品时尚的名字**:“戒不掉 ní 菂好↘”这类名字融合了个性化的符号和文字,显得既时尚又有深度,往往能够吸引同龄人的目光,展示出独特的个性。 4. **经典网名大全**:“So 丶滚吧”等经典网名,以其简洁...

    asp 中文转拼音(字库转换,非unicode编码转换)

    纯字库转换,包含几乎所有汉字,网上现有传播的转换都是unicode编码转换,其中很多字不在字库内,举例:瑛(ying)无法识别,存在很多问题,本代码直接字库转换,且公开文本,没有找到的字还可以添加到字库。...

    FSU编码器测试器

     现场光栅尺检测,检测SinCos 1Vpp信号强度,零点信息  检测SinCos 1Vpp信号的李萨如 (Lissajous) 图形强度,评价光栅尺(编码器)状态  现场检测方波编码器的相位信息和连线状态,故障查找 ...

    FLE-10系列光纤激光尺说明书

    FLE-10系列光纤激光尺是一款新型高精度测量设备,采用光纤激光技术,提供了一种可以替代传统光栅尺的测量方案。FLE-10具备多种突出特性,包括极高的分辨率和测量精度、较宽的测量范围、快速的测量速度、灵活的输出...

    另一个Qt实现代码编辑器

    【Qt实现代码编辑器】 Qt是一个跨平台的C++图形用户界面应用程序开发框架,由挪威的Trolltech公司(后被Nokia收购)开发。它提供了丰富的API和工具,使得开发者能够创建出功能强大、界面美观的应用程序,包括但不...

Global site tag (gtag.js) - Google Analytics