3.6 日志
hyperf/logger 组件是基于 psr/logger 实现的,默认使用 monolog/monolog 作为驱动,在 hyperf-skeleton 项目内默认提供了一些日志配置,默认使用 Monolog\Handler\StreamHandler, 由于 Swoole 已经对 fopen, fwrite 等函数进行了协程化处理,所以只要不将 useLocking 参数设置为 true,就是协程安全的。
安装composer包
composer require hyperf/logger
- 配置文件:
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 App\Exception\ResourceException;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\HttpServer\Annotation\Middleware;
use Hyperf\HttpServer\Annotation\Middlewares;
class IndexController extends AbstractController
{
/**
* @var \Psr\Log\LoggerInterface
*/
protected $logger;
public function __construct(\Hyperf\Logger\LoggerFactory $loggerFactory)
{
$this->logger = $loggerFactory->get('log', 'default');
}
public function index()
{
$this->logger->info('hello world');
}
}
使用:封装Log类
<?php
namespace App\Controller;
use App\Exception\ResourceException;
use Hyperf\HttpServer\Annotation\AutoController;
use Hyperf\HttpServer\Annotation\Middleware;
use Hyperf\HttpServer\Annotation\Middlewares;
class IndexController extends AbstractController
{
/**
* @var \Psr\Log\LoggerInterface
*/
protected $logger;
public function index()
{
$this->logger = \Hyperf\Utils\ApplicationContext::getContainer()
->get(\Hyperf\Logger\LoggerFactory::class)
->get('log', 'default');
$this->logger->info('hello world');
}
}
日志内容:在runtime/logs目录下
文档更新时间: 2021-09-24 16:17 作者:赵豪