hyperf 设置记录日志级别并日志写入文件中

最近用hyperf上线了个项目,守护进程挂着,发现平常控制台输出的日志要是查起来有点尴尬,想让日志写入文件并忽略掉DEBUG和INFO等级的日志,研究一番终于找到调整的方法,奔走相告希望能帮到大家

 

(实际上hyperf文档关于这块都有介绍,这里介绍操作一下帮助理解)

首先app目录创建stdou接管类StdoutLoggerFactory

<?php
declare(strict_types=1);

namespace App;

use Hyperf\Utils\ApplicationContext;
use Psr\Container\ContainerInterface;

class StdoutLoggerFactory
{
    public function __invoke(ContainerInterface $container)
    {
        return ApplicationContext::getContainer()->get(\Hyperf\Logger\LoggerFactory::class)->get('log','stdou');
    }
}

 

修改config/dependencies.php 接管StdoutLoggerInterface类

<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://doc.hyperf.io
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE
 */

return [
    Hyperf\Contract\StdoutLoggerInterface::class => App\StdoutLoggerFactory::class,
];

修改config/logger.php 增加日志组别

<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://doc.hyperf.io
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf-cloud/hyperf/blob/master/LICENSE
 */

return [
    'stdou' => [
        'handler' => [
            'class' => Monolog\Handler\RotatingFileHandler::class,
            'constructor' => [
                'filename' => BASE_PATH . '/runtime/logs/stdou/stdou.log',
                'level' => Monolog\Logger::DEBUG,
            ],
        ],
        'formatter' => [
            'class' => Monolog\Formatter\LineFormatter::class,
            'constructor' => [
                'format' => null,
                'dateFormat' => null,
                'allowInlineLineBreaks' => true,
            ],
        ],
    ],

];

 

然后就可以让日志以文件的方法输出了,不过一些DEBUG和INFO级别的日志用处不大所以我们有时候需要隐藏这两级

 

设置日志等级的方法是更改config/logger.php的这一段    如文中只处理日志级别 >=Logger::NOTICE 的日志

顺便附上级别,也可在源码中找到

Monolog\Logger::DEBUG
Monolog\Logger::INFO
Monolog\Logger::NOTICE
Monolog\Logger::WARNING
Monolog\Logger::ERROR
Monolog\Logger::CRITICAL
Monolog\Logger::ALERT
Monolog\Logger::EMERGENCY

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值