# 日志

# 简介

CmlPHP中提供了简化的psr-3日志接口。在对其进行改进的过程中也是比较纠结是否要完全按照psr-3,甚至直接使用monolog这样强大的第三方包。但是在我直接用monolog后看了下内存占用,已经接近空业务的时候框架自身的占用了。而CmlPHP是定位轻量的开发框架。所以还是决定自己开发了一个简化的psr-3日志接口。

TIP

框架在线上模式的时候,默认Log只记录致命错误及未被捕获异常可以通过修改配置文件中log_warn_log=>true来记录更详细的日志。默认使用File驱动日志按日期保存在Runtime/Logs目录下。

# 配置

涉及到Log主要的

 /**日志配置**/
'log_warn_log' => false, //警告级别的日志默认不记录
'log_driver' => 'File', //日志驱动,内置File/Redis两种
'log_prefix' => 'cml_log',//会显示到日志内容中,同时当以redis为驱动的时候会做为队列的前缀

# 调用接口

`\Cml\Log::debug($log, array $context = array());`//添加debug类型的日志

`\Cml\Log::info($log, array $context = array());`//添加info类型的日志

`\Cml\Log::notice($log, array $context = array());`//添加notice类型的日志

`\Cml\Log::warning($log, array $context = array());`//添加warning类型的日志

`\Cml\Log::error($log, array $context = array());`//添加error类型的日志

`\Cml\Log::critical($log, array $context = array());`//添加critical类型的日志

`\Cml\Log::emergency($log, array $context = array());`//添加emergency类型的日志

# 驱动

可在入口中配置使用的驱动

Cml::getContainer()->singleton('cml_log', \Cml\Logger\Db::class);
//\内置\Cml\Logger\File::class|\Cml\Logger\Redis::class |\Cml\Logger\Db::class三种