需求:在开发及测试过程中需要打印日志,并且可以将日志内容打印到指定文件,这样方便查看。
过程:
- 打开think\Log文件,在该文件中添加一个静态方法,代码如下:
/**
-
@param $mark 备注
-
@param $log_content 日志内容
-
@param string $fname 文件名
*/
public static function mylog($mark, $log_content, $fname = “”)
{
$max_size = 30000000; //字节
if ($fname == “”) {
$log_filename = RUNTIME_PATH . ‘/log/’ . date(‘Ym-d’) . “.log”;
} else {
$log_filename = RUNTIME_PATH . ‘/log/’ . $fname . “.log”;
}
if (file_exists(KaTeX parse error: Expected 'EOF', got '&' at position 15: log_filename) &̲& abs(filesize(log_filename)) > $max_size) {
//当日志文件过大,移动文件并重命名
rename( l o g f i l e n a m e , d i r n a m e ( log_filename, dirname( logfilename,dirname(log_filename) . DS . date(‘Ym-d-His’) . $fname . “.log”);
}
$t = microtime(true);
m i c r o = s p r i n t f ( " micro = sprintf("%06d", ( micro=sprintf("t - floor($t)) * 1000000);
$d = new \DateTime (date(‘Y-m-d H:i:s.’ . $micro, $t));
if(is_array($log_content)){
l o g c o n t e n t = J S O N R e t u r n ( log_content = JSONReturn( logcontent=JSONReturn(log_content);
}
file_put_contents($log_filename,
’ ’ . $d->format(‘Y-m-d H:i:s u’) . " key:" . $mark . “\r\n” . $log_content . “\r\n------------------------ --------------------------\r\n”,
FILE_APPEND);
}
- 使用:
在控制器中引入Log类: use think\Log;
调用方法: Log::mylog(“info:”, JSONReturn($info), “admin_index”);
- 注意:JSONReturn()方法是放在了common.php文件中,代码如下:
function JSONReturn($result)
{
return json_encode($result,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}