立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 3669|回复: 0

[Discuz 通用教程] Discuz!运行日志记录函数runlog详解介绍

[复制链接]
发表于 2020-10-25 19:34:17 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
discuz!的\data\log\目录下,我们会看到很多格式如YYYYMM_XX.php的文件(如下图所示),打开文件我们就会看到很多操作日志,这些日志怎么生成的呢,今天我们就来看看Discuz!运行日志记录runlog函数

Discuz!运行日志记录函数runlog详解介绍

Discuz!运行日志记录函数runlog详解介绍

runlog函数定义文件 \source\function\function_core.php
  1. function runlog($file, $message, $halt=0) {
  2.         helper_log::runlog($file, $message, $halt);
  3. }
复制代码

我们看到这个函数是调用的helper_log小助手,helper_log定义于:\source\class\helper\helper_log.php

相关方法如下
  1. public static function runlog($file, $message, $halt=0) {
  2.         global $_G;
  3.         $nowurl = $_SERVER['REQUEST_URI']?$_SERVER['REQUEST_URI']:($_SERVER['PHP_SELF']?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_NAME']);
  4.         $log = dgmdate($_G['timestamp'], 'Y-m-d H:i:s')."\t".$_G['clientip']."\t$_G[uid]\t{$nowurl}\t".str_replace(array("\r", "\n"), array(' ', ' '), trim($message))."\n";
  5.         helper_log::writelog($file, $log);//写入文件
  6.         if($halt) {
  7.                 exit();
  8.         }
  9. }

  10. public static function writelog($file, $log) {
  11.         global $_G;
  12.         $yearmonth = dgmdate(TIMESTAMP, 'Ym', $_G['setting']['timeoffset']);
  13.         $logdir = DISCUZ_ROOT.'./data/log/';
  14.         $logfile = $logdir.$yearmonth.'_'.$file.'.php';//日志文件
  15.         if(@filesize($logfile) > 2048000) {
  16.                 $dir = opendir($logdir);
  17.                 $length = strlen($file);
  18.                 $maxid = $id = 0;
  19.                 while($entry = readdir($dir)) {
  20.                         if(strpos($entry, $yearmonth.'_'.$file) !== false) {
  21.                                 $id = intval(substr($entry, $length + 8, -4));
  22.                                 $id > $maxid && $maxid = $id;
  23.                         }
  24.                 }
  25.                 closedir($dir);


  26.                 $logfilebak = $logdir.$yearmonth.'_'.$file.'_'.($maxid + 1).'.php';
  27.                 @rename($logfile, $logfilebak);
  28.         }
  29.         if($fp = @fopen($logfile, 'a')) {
  30.                 @flock($fp, 2);
  31.                 if(!is_array($log)) {
  32.                         $log = array($log);
  33.                 }
  34.                 foreach($log as $tmp) {
  35.                         fwrite($fp, "<?PHP exit;?>\t".str_replace(array('<?', '?>'), '', $tmp)."\n");
  36.                 }
  37.                 fclose($fp);
  38.         }
  39. }
复制代码
我看可以看到运行日志按月存储在各个分类(日志的分类大致有'illegal', 'rate', 'credit', 'mods', 'medal', 'ban', 'cp', 'magic', 'error', 'invite', 'payment', 'warn', 'crime', 'sendmail'几种)的文件下,每条记录的不同字段以制表符\t分隔;
这样就可以了
道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程【道勤网】 ( 皖ICP备15000319号-1 )

GMT+8, 2024-11-15 00:41

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表