hyperf/logger 组件是基于 psr/logger 实现的,默认使用 monolog/monolog 作为驱动,在 hyperf-skeleton 项目内默认提供了一些日志配置,默认使用 Monolog\Handler\StreamHandler, 由于 Swoole 已经对 fopen, fwrite 等函数进行了协程化处理,所以只要不将 useLocking 参数设置为 true,就是协程安全的。
安装
composer require hyperf/logger
配置
在 hyperf-skeleton 项目内默认提供了一些日志配置,默认情况下,日志的配置文件为 config/autoload/logger.php ,可以配置日志位置,格式例如年月日,以及日志等级
示例如下:
<?php return [ 'default' => [ 'handler' => [ 'class' => \Monolog\Handler\StreamHandler::class, 'constructor' => [ 'stream' => BASE_PATH . '/runtime/logs/hyperf.log', 'level' => \Monolog\Logger::DEBUG, ], ], 'formatter' => [ 'class' => \Monolog\Formatter\LineFormatter::class, 'constructor' => [ 'format' => null, 'dateFormat' => null, 'allowInlineLineBreaks' => true, ] ], ], ];
使用:在构造函数中实例对象
<?php
namespace App\Controller;
use Hyperf\Logger\LoggerFactory;
class UserController extends AbstractController
{
/**
* @var PsrLogLoggerInterface
*/
protected $logger;
public function __construct(LoggerFactory $loggerFactory)
{
$this->logger = $loggerFactory->get('log', 'default');
}
public function index()
{
$this->logger->info('hello world');
}
}使用:封装Log类
<?php
namespace App\Controller;
use Hyperf\Logger\LoggerFactory;
use Hyperf\Context\ApplicationContext;
class UserController extends AbstractController
{
protected $logger;
public function index()
{
$this->logger = ApplicationContext::getContainer()->get(LoggerFactory::class)->get('log', 'default');
$this->logger->info('hello world');
}
}日志内容:在runtime/logs目录下
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn