用户的操作日志应如何记录?

csz_1987 2011-11-06 09:57:42
系统需要对用户的操作进行记录。用户的每一个“增、删、改、查”操作都必须被插入日志表。

请问除了在“增、删、改、查”的“业务SQL”里嵌入“日记记录SQL”外,还有没有别的方法来实现用户操作日志记录?

这么做好像代码冗余很大,而且很烦。是否有类似“拦截器”之类的东西,在更高的层次“监听”用户操作,对用户操作日志的记录在“拦截器”内完成。或者是否有类似的日志记录组件?


PS:是用户操作日志记录,不是系统异常日志记录。
...全文
7161 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
芦羊 2013-12-23
  • 打赏
  • 举报
回复
支持楼主,我也遇到了类似问题,冗余代码和效率是最大的障碍!!!
chinazdq 2011-11-07
  • 打赏
  • 举报
回复
将日志写入操作和业务操作封装在两个事务里,但是属于一个大事务。
cchvsgame 2011-11-07
  • 打赏
  • 举报
回复
有,继续你的sqlConnection,可在你的执行语句上,再包装一层,然后在公用 的SQL语句中,查是否有DELETE INSERT UPDATA即可,一般都是这么做的。


sql="INSERT tab(a,b) VALUES('a','b')";
ComDB.Exec(sql);

Exec是你的封装函数
int Exec(string sql)
{
if(sql.转成大写.Find("INSERT","DELETE","UPDATA"))
{
LOG
}
}
快溜 2011-11-07
  • 打赏
  • 举报
回复
在数据库操作类中处理,每次访问数据库都添加一条记录给操作日志表,表触发器是做不到这一点的
曼尼叔叔 2011-11-07
  • 打赏
  • 举报
回复
把数据操作都封装起来做一个类或者接口,在里面把每一个操作都加上操作日志,系统内所有的数据操作都从这个类继承下来,就可以了撒
wanghui0380 2011-11-06
  • 打赏
  • 举报
回复
另外
增、删、改、查”的“业务SQL”里嵌入“日记记录SQL”

其实大部分数据库本身就有类似工作,比如mssql,除了你的数据库文件以外,本身就有log日志文件,数据库里任何变动其实都已经在日志文件当中记录了
wanghui0380 2011-11-06
  • 打赏
  • 举报
回复
我想你应该好好看一下AOP到底指的是什么!!

既然你已经明白系统异常日志记录 怎么做

那么是用户操作日志记录实际是同样原理。 切面编程的切面不止包括异常处理,但凡可以成面状散布在系统的东西,实际都可以这么做,包括权限,包括日志

ps:另外和老p想法一致,这种要求本身带有不合理性,客户实际上并不需要所有操作记录,客户在实际操作中了不起需要一些关键信息的更改记录,如果夸大记录范围,实际上作用并非很大,相反还意味着你必须去做一种信息评价工作,去给客户参考是否有类似“入侵”操作判定,这样无形当中给你的系统“镀了金”,真的需要这样的“镀金”吗?大部分情况下是不需要滴,如果真需要,那实际上是另外一个项目---入侵检测系统了
幸福的小木鱼 2011-11-06
  • 打赏
  • 举报
回复
我也建议你在后台代码中 判断,把信息写入并保存到文件中,不存入数据库中,然后对文件进行定期备份,这样会好一些
  • 打赏
  • 举报
回复
随便乱说说,我想就会被你以为是什么高明的设计了。其实这个问题下,有经验的设计师都知道这是一个陷阱,如果你不具体深入到所谓用户需求,你就很容易胡乱设计出对一般的软件的性能严重有害的东西。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csz_1987 的回复:]
你就告诉我,有没有更好的办法实现就行了。
用户有用户的想法。[/Quote]

没有更好,只有用最低级的的东西来忽悠这个所谓的“更高层次”操作。比如直截了当说“SQL Server 触发器”,这谁都懂。
  • 打赏
  • 举报
回复
你可以看看那些真正一看就特别是用的框架,哪一个不是从细节出发,这样才显得有框架的架构!比如说,如果我们具体到SQL Server的触发器,那么也就是明白了。

不知道你是从何而来的设计。如果用户根本不需要,那么最好不要让电脑花费巨大的代价去记录什么。
csz_1987 2011-11-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sp1234 的回复:]

用户要记录什么?问用户。如果用户不需要,而你编程者需要,那对用户来说就是多余的。

至于什么高层次,首先都要有恰好合适的层次,也就是知道细节。不知道细节的所谓解决方案,全都是空洞的理论。
[/Quote]

你就告诉我,有没有更好的办法实现就行了。
用户有用户的想法。
  • 打赏
  • 举报
回复
用户要记录什么?问用户。如果用户不需要,而你编程者需要,那对用户来说就是多余的。

至于什么高层次,首先都要有恰好合适的层次,也就是知道细节。不知道细节的所谓解决方案,全都是空洞的理论。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧