Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii不使用无限循环进行日志记录_Php_Logging_Yii - Fatal编程技术网

Php Yii不使用无限循环进行日志记录

Php Yii不使用无限循环进行日志记录,php,logging,yii,Php,Logging,Yii,我不确定这是yii中的错误还是我做了一个错误的方法。我正在创建一个不停止运行的后端进程,而日志记录是至关重要的 我创建了一个控制台应用程序。当我执行以下操作时,我的日志记录工作正常: public function actionTest(){ Yii::log( "testing", 'error', 'worker.*'); return; } 我可以看到“测试”登录到运行时文件夹中的worker.log文件> 但是,当我创建无限循环时,我看不到任何记录的

我不确定这是yii中的错误还是我做了一个错误的方法。我正在创建一个不停止运行的后端进程,而日志记录是至关重要的

我创建了一个控制台应用程序。当我执行以下操作时,我的日志记录工作正常:

public function actionTest(){
         Yii::log( "testing", 'error', 'worker.*');
         return;
}
我可以看到“测试”登录到运行时文件夹中的worker.log文件>

但是,当我创建无限循环时,我看不到任何记录的内容:

public function actionTest(){
       while(1){
             Yii::log( "testing", 'error', 'worker.*');
             echo 'running';
            usleep(5000000);
       }
}
worker.log文件为空

以下是console.php中worker.log的配置设置:

array(
   'class'=>'CFileLogRoute',
   'categories' => 'worker.*',
   'logFile' => 'worker.log'
)

出于性能原因,默认情况下,如果clouger::autoDump设置为true,则Yii会在请求结束时或达到clouger::autoFlash消息限制时输出日志记录

在你的情况下,这个事件永远不会发生。要解决此问题,您有几个选项:

  • 通过设置autoFlash=1autoDump=true,将阻塞器配置为在记录消息时立即刷新消息
  • 手动调用阻塞器::flush()方法
  • 您可以创建自己的logger类,按照需要的方式刷新消息
  • 或者使用一个现有的立即刷新消息的实现,如

你说的“无限循环”是什么意思?你能发布你的代码吗?对不起,我刚意识到我忘了添加循环。请看我的编辑,你是对的。似乎日志记录只在请求结束时起作用。在阻塞器中有一个flush命令,您试过了吗?谢谢,@LaurentF在我的回答中添加了这一点。