PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

将特定类型的日志记录到数据库

管理员 2024-12-14
Fastadmin
8

口水话

TP5框架本身提供了日志类,可以自动记录系统运行日志,默认为文件方式,支持文件和socket两种方式。
默认方式下,
日志文件默认保存在 /runtime/log/中,以 201901 这样的4位年+2位月为目录名,
以日期为文件名,如 16.log,
同时,默认每个文件最大2M,超过时,自动将 16.log 重命名为 当前时间戳+日期.log,
再新生成一个 16.log 文件。

业务系统上线后,
BUG是在所难免的,
但日志文件很大很多,
要去其中排查error类型的日志,比较麻烦,
因此,有了这个方式,
将error类型的日志保存到一个数据库表中,
在需要时直接从该表中查询即可,
当然,
你也可以参照此方法,
调用其他接口,系统通知,
等等。

代码

文件 thinkphplibrarythinkLog.php

添加需要保存到数据库的日志类别

    /**     * @var array 需要同步记录到数据库的日志类型     */    protected static $save2dbConf = [        'types' => ['error']    ];

添加一个静态方法

    /**    * 将特定类型的日志保存到数据库    */    public static function save2db($type, $msg) {        if(!in_array($type, self::$save2dbConf['types'])) {            return false;        }        defined('DATE_TIME') || define('DATE_TIME', date('Y-m-d H:i:s', time()));        $header = Request::instance()->header();        $SQL = sprintf("INSERT INTO tbl_system_log(uri,client_ip,user_agent,type,content,createtime,dtime) VALUES('%s','%s','%s','%s','%s',%s,'%s')",            array_key_exists('x-original-url', $header) ? $header['x-original-url'] : '',            '',            array_key_exists('user-agent', $header) ? $header['user-agent'] : '',            $type,            $msg,            NOW,            DATE_TIME        );        Db::execute($SQL);    }

在 record 和 write 方法中,添加调用新添的 save2db 方法

        // 将特定类型写到 tbl_system_log        self::save2db($type, $msg);

就可以了。

另外,需要在文件开头引用 Request 类,NOW 是定义为 time(),DATE_TIME 为 date('Y-m-d H:i:s', NOW),
数据库表结构也简单,照着弄就行。

image.png


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部