# 日志處理
日志記錄和寫入由`\lib\Log`類完成,通常我們使用`lib\facade\Log`類進行靜態調用,日志使用monolog文件方式記錄,其他方式請自行擴展
> 日志遵循`PSR-3`規范
## 日志配置
日志的配置文件是配置文件目錄下的`log.php`文件,系統在進行日志寫入之前會讀取該配置文件進行初始化。
日志的全局配置參數
下面是一個`log.php`配置示例:
~~~
// +----------------------------------------------------------------------
// | 日志設置
// +----------------------------------------------------------------------
return [
// 日志保存目錄
'path' => '',
// 日志通道名
'channel' => 'app',
// 日志記錄級別
'level' => 'debug',
// 最大日志保留天數,超過刪除 0無限制
'max_files' => 0,
// 文件權限
'file_permission' => 0666,
// 是否關閉日志寫入
'close' => false,
];
~~~
。
## 日志寫入
### 手動記錄
一般情況下,系統的日志記錄是自動的,無需手動記錄,但是某些時候也需要手動記錄日志信息,Log類提供了3個方法用于記錄日志。
| 方法 | 描述 |
| --- | --- |
| record() | 記錄日志信息到內存 |
~~~
/**
* 記錄日志信息
* @access public
* @param mixed $message 日志信息
* @param string $level 日志級別
* @param array $context 替換內容
* @param string $fileName 文件名
* @return $this
*/
public function record($message, $level = 'info', array $context = [],$fileName = '')
~~~
record方法用法如下:
~~~
Log::record('測試日志信息');
~~~
默認記錄的日志級別是`info`,也可以指定日志級別:
~~~
Log::record('測試日志信息','notice',['id' => 1]);
~~~
### 日志級別
對系統的日志按照級別來分類記錄,按照`PSR-3`日志規范,日志的級別從低到高依次為:`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`
> 系統發生異常后記錄的日志級別是`error`
系統提供了不同日志級別的快速記錄方法,例如:
~~~
Log::error('錯誤信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('錯誤信息','error');
Log::record('日志信息','info');
Log::debug('調試信息');
Log::notice('調試信息');
Log::warning('調試信息');
~~~
示例
指定文件名
Log::info Log::notice 可以指定文件名
~~~
Log::info('支付記錄',$data,'pay');
~~~
生成的日志文件如
pay-info-2020-09-10.log