%PDF- %PDF-
| Direktori : /home2/vacivi36/intranet.vacivitta.com.br/protected/vendor/yiisoft/yii2-queue/src/ |
| Current File : //home2/vacivi36/intranet.vacivitta.com.br/protected/vendor/yiisoft/yii2-queue/src/LogBehavior.php |
<?php
/**
* @link https://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license https://www.yiiframework.com/license/
*/
namespace yii\queue;
use Yii;
use yii\base\Behavior;
/**
* Log Behavior.
*
* @author Roman Zhuravlev <zhuravljov@gmail.com>
*/
class LogBehavior extends Behavior
{
/**
* @var Queue
* @inheritdoc
*/
public $owner;
/**
* @var bool
*/
public $autoFlush = true;
/**
* @inheritdoc
*/
public function events()
{
return [
Queue::EVENT_AFTER_PUSH => 'afterPush',
Queue::EVENT_BEFORE_EXEC => 'beforeExec',
Queue::EVENT_AFTER_EXEC => 'afterExec',
Queue::EVENT_AFTER_ERROR => 'afterError',
cli\Queue::EVENT_WORKER_START => 'workerStart',
cli\Queue::EVENT_WORKER_STOP => 'workerStop',
];
}
/**
* @param PushEvent $event
*/
public function afterPush(PushEvent $event)
{
$title = $this->getJobTitle($event);
Yii::info("$title is pushed.", Queue::class);
}
/**
* @param ExecEvent $event
*/
public function beforeExec(ExecEvent $event)
{
$title = $this->getExecTitle($event);
Yii::info("$title is started.", Queue::class);
Yii::beginProfile($title, Queue::class);
}
/**
* @param ExecEvent $event
*/
public function afterExec(ExecEvent $event)
{
$title = $this->getExecTitle($event);
Yii::endProfile($title, Queue::class);
Yii::info("$title is finished.", Queue::class);
if ($this->autoFlush) {
Yii::getLogger()->flush(true);
}
}
/**
* @param ExecEvent $event
*/
public function afterError(ExecEvent $event)
{
$title = $this->getExecTitle($event);
Yii::endProfile($title, Queue::class);
Yii::error("$title is finished with error: $event->error.", Queue::class);
if ($this->autoFlush) {
Yii::getLogger()->flush(true);
}
}
/**
* @param cli\WorkerEvent $event
* @since 2.0.2
*/
public function workerStart(cli\WorkerEvent $event)
{
$title = 'Worker ' . $event->sender->getWorkerPid();
Yii::info("$title is started.", Queue::class);
Yii::beginProfile($title, Queue::class);
if ($this->autoFlush) {
Yii::getLogger()->flush(true);
}
}
/**
* @param cli\WorkerEvent $event
* @since 2.0.2
*/
public function workerStop(cli\WorkerEvent $event)
{
$title = 'Worker ' . $event->sender->getWorkerPid();
Yii::endProfile($title, Queue::class);
Yii::info("$title is stopped.", Queue::class);
if ($this->autoFlush) {
Yii::getLogger()->flush(true);
}
}
/**
* @param JobEvent $event
* @return string
* @since 2.0.2
*/
protected function getJobTitle(JobEvent $event)
{
$name = $event->job instanceof JobInterface ? get_class($event->job) : 'unknown job';
return "[$event->id] $name";
}
/**
* @param ExecEvent $event
* @return string
* @since 2.0.2
*/
protected function getExecTitle(ExecEvent $event)
{
$title = $this->getJobTitle($event);
$extra = "attempt: $event->attempt";
if ($pid = $event->sender->getWorkerPid()) {
$extra .= ", PID: $pid";
}
return "$title ($extra)";
}
}