MySQL-php怎样做个日志系统记录网站的一切操作,嵌入原网站中,不是log日志是用数据库的。

发布于 2017-02-01 05:28:07 字数 232 浏览 2015 评论 3

公司内部管理系统,php的。
网站需要做个功能,就是把所有用户的一切涉及数据库操作的(除了查询的其他动作,例如插入修改删除)动作都记录到数据库中,并输出到页面。
就是个日志记录功能。需要的信息有:

操作人,操作时间,操作名称,操作类型。

这个应该如何架构???网站系统每条非查询sql的地方都再加一条sql把这条sql的日志插到日志表里???工作量好大。

还是有什么比较简单的办法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

归属感 2017-09-19 23:24:48

最简单的就是记录真实触发数据库变化的请求,如果是mvc的话,也就是记录每次牵涉到数据库更改的action和当时的操作人,基本上就可以知道做什么mysql的什么操作。

复杂一点的,可以进行通过封装mysql_query(类似这样的操作mysql)的函数,绝对不允许使用php原生函数,select和不改变数据库的统一用封装好的query(通过检查sql是否有insert/update/replace等,有的话禁止),更新数据库的用封装好的update执行,那么你所要做的就是把通过封装好update的sql记录下来就可以了。

想挽留 2017-06-11 19:53:55

如果你没有用框架的话,自己写的程序并且带有SQL语句的话非常简单,只要把执行的SQL语句复制到变量上,然后写入到文件中就可以看到了,下面是一个开源工程的例子:

$sql = "INSERT INTO ".$configValues['CONFIG_DB_TBL_RADUSERGROUP']." (uid,UserName,GroupName,priority) "." VALUES ('$uid','".$dbSocket->escapeSimple($username)."', '".$dbSocket->escapeSimple($group)."',0) ";
$res = $dbSocket->query($sql);
$logDebugSQL .= $sql . "n";

只要你把$logDebugSQL 写入到数据库或者文件中,或者直接echo到当前页面就可以实现debug信息输出了

浮生未歇 2017-04-22 23:38:11

这个只是修改你的数据库DB类就可以了,在你的insert、update、delete等操作方法里加上一个MyAddLog方法就可以了
这个MyAddLog方法你自己定义到DB类里,比如:

public function MyAddLog($action,$opter,$opttime,$sql)
{
//生成日志
}

再比如下面是删除记录方法:

public function MyDelete($where="") //{{{ 删除
{
if (empty($where))
return;
$sql = "DELETE FROM ".$this->dataTableName." WHERE " . $where;
$this->Execute($sql);

$this->MyAddLog('delete',$opter,time(),$sql);//这里$opter可以通过session来保存获取
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文