多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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渠道的配置信息,创建出一条新的渠道配置信息 与老信息共用一个渠道名称 但是执行流程进行了分离