[TOC]
# 日志
日志类库可以存放一些信息
## **配置文件**
```
project 应用部署目录
├─conf 配置文件目录
│ └─log.php 日志配置信息
```
## **配置信息**
```
return [
// +----------------------------------------------------------------------
// | 日志信息配置
// | level:空则不记录 指定记录类型 ['debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency']
// | type: File->存入文件 Redis->存入redis MongoDB->存入MongoDB
// | realtime: 实时写入 true->实时写入 false->先写入内存
// | formatter:输出日志格式
// | ├─type:日志类型 line->字符串 html->html模式 json->json格式
// | ├─output:日志样式 datetime->时间戳 channel->频道名 level_name->日志等级 message->消息 context->关联数组
// | ├─date_format:时间样式格式
// | drive:驱动
// | ├─name:类型名称 single->单文件模式 daily->每日递增模式
// | ├─path:File保存文件目录
// | ├─file_max:daily模式专用 最大文件保存数量 0不限制
// | ├─file_name:single模式专用 指定文件名称 未设置则使用渠道名称做文件名
// +----------------------------------------------------------------------
//
'Denha' => [
'type' => 'File',
'realtime' => false, // 实时写入
'level' => ['debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency'],
'formatter' => [
'type' => 'line',
'output' => '[%datetime%] %channel%.%level_name% %message% %context% %extra%',
'date_format' => 'Y-m-d H:i:s',
],
'drive' => [
'name' => 'daily',
'path' => DATA_RUN_PATH. php_sapi_name() . DS,
'file_max' => 0,
'file_name' => '',
],
]
];
```
默认配置是Denha渠道
## **启用日志**
```
use denha\Log;
Log::info('这是一条调试信息');
```
会直接调用log.php中的Denha渠道配置信息 以上代码将会在 /storage/run/Y-m-d.log 中生成一条日志信息
`[2019-12-30 11:41:49] Denha.INFO 这是一条调试信息`
## **日志类型**
日志保存类型支持一下格式
| 类型值 | 说明 |
| --- | --- |
| debug | 详细的调试信息 |
| info | 有意义的事件,比如用户登录 |
| notice | 正常但是值得注意的事件 |
| warning | 异常事件,但是并不是错误。比如使用了废弃了的API,错误地使用了一个API,以及其他不希望发生但是并非必要的错误 |
| error | 运行时的错误,不需要立即注意到,但是需要被专门记录并监控到 |
| critical | 边界条件/危笃场景。比如应用组件不可用了,未预料到的异常 |
| alert | 必须立即采取行动。比如整个网站都挂了,数据库不可用了等。这种情况应该发送短信警报,并把你叫醒 |
| emergency | 紧急请求:系统不可用了 |
## **更换新渠道**
> 当设置了渠道名称 或覆盖了渠道配置信息 需要使用 类方法 `->` 进行链接 如果使用默认配置则使用静态方法`::`进行链接
### log中添加新渠道配置信息
默认使用log.php中的 Denha渠道。如果需要使用新渠道,需要现在log.php添加的新的渠道配置
`Log::setChannel('渠道名')->debug('这是一条Debug信息');`
以上代码将会使用新的渠道配置信息
### 覆盖log中的渠道配置
```
$config = [
'drive'=>'single',
'path'=>DATA_RUN_PATH,
'file_name'=>'test',
];
\denha\Log::setChannel('Denha')::setConfig($config)->warning('这是一条警告信息');
```
以上代码将会改写Denha渠道的配置信息,创建出一条新的渠道配置信息 与老信息共用一个渠道名称 但是执行流程进行了分离