hyperf: 自定义日志类
一,定义一个日志group
config/autoload/logger.php
'daily' => [
'handler' => [
'class' => Monolog\Handler\RotatingFileHandler::class,
'constructor' => [
'filename' => BASE_PATH . '/runtime/logs/daily.log',
'level' => Monolog\Logger::INFO,
],
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class,
'constructor' => [
'format' => "[%datetime%] %channel% %level_name%:%message%\n",
'dateFormat' => 'Y-m-d H:i:s',
'allowInlineLineBreaks' => true,
],
],
],
说明:此处的指定格式是为了避免写日志时每行后面有两个空数组符号,
为什么会出现空数组符号,是因为日志默认的format为:
"||%datetime%||%channel%||%level_name%||%message%||%context%||%extra%\n"
有为空的项时,则显示为空数组 []
二,定义日志类
app/Log/DailyLog.php
<?php
namespace App\Log;
use Hyperf\Context\ApplicationContext;
use Hyperf\Logger\LoggerFactory;
class DailyLog
{
/**
* @var \Psr\Log\LoggerInterface
*/
protected $logger;
public function __construct()
{
$this->logger = ApplicationContext::getContainer()->get(LoggerFactory::class)->get("daily","daily");
}
public function info($content){
$this->logger->info($content);
}
}
三,调用日志类
controller/ImageController.php
public function imagedetail(RequestInterface $request, ResponseInterface $response) {
//写日志
//$this->logger->info("测试写一条日志",$request->all());
$loggerFile = new DailyLog();
$loggerFile->info("测试写一条日志");
$data = [
'key' => 'value'
];
return $response->json($data);
}
日志格式:
[2025-02-07 17:45:44] daily INFO:测试写一条日志
浙公网安备 33010602011771号