Yii2 Log 特性

文件Log的配置:

'log' =>[  
      # 追踪级别  
      # 消息跟踪级别  
      # 在开发的时候,通常希望看到每个日志消息来自哪里。这个是能够被实现的,通过配置 log 组件的 yii\log\Dispatcher::traceLevel 属性, 就像下面这样:  
      'traceLevel' => 3,  
        
      # 通过 yii\log\Logger 对象,日志消息被保存在一个数组里。为了这个数组的内存消耗, 当数组积累了一定数量的日志消息,日志对象每次都将刷新被记录的消息到 log targets 中。 你可以通过配置 log 组件的 yii\log\Dispatcher::flushInterval 属性来自定义数量  
      'flushInterval' => 1,  
        
      'targets' => [  
        'file' =>[  
          //'levels' => ['trace'],  
          'categories' => ['fecshop_debug'],  
          'class' => 'yii\log\FileTarget',  
          # 当 yii\log\Logger 对象刷新日志消息到 log targets 的时候,它们并 不能立即获取导出的消息。相反,消息导出仅仅在一个日志目标累积了一定数量的过滤消息的时候才会发生。你可以通过配置 个别的 log targets 的 yii\log\Target::exportInterval 属性来 自定义这个数量,就像下面这样:  
          'exportInterval' => 1,  
          # 输出文件  
          'logFile' => '@appfront/runtime/fecshop_logs/fecshop_debug.log',  
          # 你可以通过配置 yii\log\Target::prefix 的属性来自定义格式,这个属性是一个PHP可调用体返回的自定义消息前缀  
          'prefix' => function ($message) {  
            return $message;  
          },  
          # 除了消息前缀以外,日志目标也可以追加一些上下文信息到每组日志消息中。 默认情况下,这些全局的PHP变量的值被包含在:$_GET, $_POST, $_FILES, $_COOKIE,$_SESSION 和 $_SERVER 中。 你可以通过配置 yii\log\Target::logVars 属性适应这个行为,这个属性是你想要通过日志目标包含的全局变量名称。 举个例子,下面的日志目标配置指明了只有 $_SERVER 变量的值将被追加到日志消息中。  
          # 你可以将 logVars 配置成一个空数组来完全禁止上下文信息包含。或者假如你想要实现你自己提供上下文信息的方式, 你可以重写 yii\log\Target::getContextMessage() 方法。  
           'logVars' => [],  
        ],  
      ],  
    ],

然后新建文件:@appfront/runtime/fecshop_logs/fecshop_debug.log 并设置可写就行。

调用:

\Yii::info($post_log,'fecshop_debug');

$post_log 就是要输出的log内容。

如果log的配置或者文件有问题会不会报错呢?

1.去掉上面的配置,然后执行调用:

\Yii::info($post_log,'fecshop_debug');

经过测试,程序不会被卡住,会继续执行的

2.配置保留,去掉配置中对应的真实文件:@appfront/runtime/fecshop_logs/fecshop_debug.log 删除掉,经过测试,发现程序不会被卡住,还是会继续执行的。

总结:log出现问题,只要不是语法文件,不会卡住,还是会继续跑下去的。