題記:這篇主要是因為困擾了很久的一個問題,沒有找到好方法,就只能用笨辦法了。
laravel的日誌設定的是daily模式,就是每天的日誌檔案分開,使用supervisor後,日誌堆積在supervisor啟動程式的一天裡了
怎麼解決呢?
在helpers函式中建一個方法
if (!function_exists('iuLog')) {
/**
* @param $level
* @param $desc
* @param array $data
* @param string $filename
*/
function iuLog($level, $desc = '', $data = [], $filename = '')
{
$logPath = storage_path() . '/logs/' . date('Y/m/');
if (!file_exists($logPath)) {
mkdir($logPath, 0777, true);
}
$filename = $filename ?: date('d') . '-iu';
$dir = $logPath . $filename . '.log';
if ($level == PHP_EOL) {
file_put_contents($dir, PHP_EOL, FILE_APPEND);
return;
}
$prefix = '[' . now() . '] ' . env('APP_ENV') . '.' . strtoupper($level) . ': ';
if (!$data) {
file_put_contents($dir, $prefix . $desc . PHP_EOL, FILE_APPEND);
return;
}
// JSON_UNESCAPED_UNICODE(中文不轉為unicode ,對應的數字 256)
// JSON_UNESCAPED_SLASHES(不轉義反斜槓,對應的數字 64)
// JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
file_put_contents($dir, $prefix . $desc . json_encode($data, 320) . PHP_EOL, FILE_APPEND);
}
}
使用:
iuLog('debug', 'Request Url: ' . $request->url());
iuLog('debug', 'Request Method: ' . $request->method());
iuLog('debug', 'Request Params: ', $request->all());
iuLog(PHP_EOL);
// 對比laravel 的 Facade 方法
Log::debug('Request Url: '.$request->url());
Log::debug('Request Method: '.$request->method());
Log::debug('Request Params: '.json_encode($request->all()));
效果:
感興趣的小夥伴可以點選檢視:dev環境根目錄就是當前日期的日誌
後記:
1.新學的知識點,json_encode同時使用2個常量
php格式化json的函式
json_encode($value,$options)
其中有2個比較常用到的引數JSON_UNESCAPED_UNICODE
(中文不轉為unicode ,對應的數字 256)JSON_UNESCAPED_SLASHES
(不轉義反斜槓,對應的數字 64)
通常json_encode只能傳入一個常量,如果同時使用2個常量怎麼辦?JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320
使用方法:json_encode($arr,320);
即可完成同時使用2個常量。
參考連結: PHP json_encode裡面經常用到的 JSON_UNESCAPED_UNICODE和JSON_UNESCAPED_SLASHES
2.這肯定不是最佳解決方案,再翻底層程式碼吧- -如果有知道的小夥伴,求教下....
本作品採用《CC 協議》,轉載必須註明作者和本文連結