需求:在開發及測試過程中需要打印日志,並且可以將日志內容打印到指定文件,這樣方便查看。
過程:
1. 打開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($log_filename) && abs(filesize($log_filename)) > $max_size) {
//當日志文件過大,移動文件並重命名
rename($log_filename, dirname($log_filename) . DS . date('Ym-d-His') . $fname . ".log");
}
$t = microtime(true);
$micro = sprintf("%06d", ($t - floor($t)) * 1000000);
$d = new \DateTime (date('Y-m-d H:i:s.' . $micro, $t));
if(is_array($log_content)){
$log_content = 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);
}
2. 使用:
在控制器中引入Log類: use think\Log;
調用方法: Log::mylog("info:", JSONReturn($info), "admin_index");
3. 注意:JSONReturn()方法是放在了common.php文件中,代碼如下:
function JSONReturn($result)
{
return json_encode($result,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
}
