swoole php 日志,easyswoole用ioc重写系统日志类

easyswoole 3.3.7

定义自己的日志类

namespace App\Ioc;

use EasySwoole\Log\LoggerInterface;

use EasySwoole\Log\Logger;

class Log implements LoggerInterface

{

private $logger;

function __construct()

{

$this->logger = new Logger(EASYSWOOLE_LOG_DIR);

}

function log(?string $msg,int $logLevel = self::LOG_LEVEL_INFO,string $category = 'debug')

{

return $this->logger->log($msg, $logLevel, $category);

}

function console(?string $msg,int $logLevel = self::LOG_LEVEL_INFO,string $category = 'debug')

{

var_dump($msg);

$this->logger->console($msg, $logLevel, $category);

}

}

IOC覆盖系统日志类

项目根目录创建文件 bootstrap.php

use App\Ioc\Log;

use EasySwoole\Component\Di;

use EasySwoole\EasySwoole\SysConst;

Di::getInstance()->set(SysConst::LOGGER_HANDLER, Log::class);

分析

EasySwoole\EasySwoole\Core.php

查看源码中的registerErrorHandler方法

....

//初始化配置Logger

$logger = Di::getInstance()->get(SysConst::LOGGER_HANDLER);

if(!$logger instanceof LoggerInterface){

$logger = new DefaultLogger(EASYSWOOLE_LOG_DIR);

}

Logger::getInstance($logger);

//初始化追追踪器

$trigger = Di::getInstance()->get(SysConst::TRIGGER_HANDLER);

if(!$trigger instanceof TriggerInterface){

$trigger = new DefaultTrigger(Logger::getInstance());

}

Trigger::getInstance($trigger);

//在没有配置自定义错误处理器的情况下,转化为trigger处理

$errorHandler = Di::getInstance()->get(SysConst::ERROR_HANDLER);

if(!is_callable($errorHandler)){

$errorHandler = function($errorCode, $description, $file = null, $line = null){

$l = new Location();

$l->setFile($file);

$l->setLine($line);

Trigger::getInstance()->error($description,$errorCode,$l);

};

}

set_error_handler($errorHandler);

....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值