webman的日志重复记录

超龄码农

问题描述

我想把错误日志独立出来 不需要在一个日志文件中查找
这里写问题具体描述
<?php
return [
'default' => [
'handlers' => [
[
'class' => Monolog\Handler\RotatingFileHandler::class,
'constructor' => [
runtime_path() . '/logs/webman.log',
7,
Monolog\Logger::DEBUG,
],
'formatter' => [
'class' => Monolog\Formatter\LineFormatter::class,
'constructor' => [null, 'Y-m-d H:i:s', true],
],
],
[
'class' => Monolog\Handler\RotatingFileHandler::class,
'constructor' => [
runtime_path() . '/logs/error.log',
30,
Monolog\Logger::ERROR,
],

        ],
    ],
],

];

为此你搜索到了哪些方案及不适用的原因

现在出现的问题就是 只要error 报错 那么 会写入2个日志文件。我想的是error就记录到error不记录到其他。但是debug的级别会记录所有
这里写搜到的方案及不适用原因

369 3 2
3个回答

nitron
'class' => Monolog\Handler\RotatingFileHandler::class,
'constructor' => [
    runtime_path() . '/logs/error.log',
    30,
    Monolog\Logger::ERROR,
    false
],

将bubble设置为false

  • 超龄码农 2025-10-13

    <?php
    return [
    'default' => [
    'handlers' => [
    [
    'class' => Monolog\Handler\RotatingFileHandler::class,
    'constructor' => [
    runtime_path() . '/logs/webman.log',
    7,
    Monolog\Logger::DEBUG,
    ],
    'formatter' => [
    'class' => Monolog\Formatter\LineFormatter::class,
    'constructor' => [null, 'Y-m-d H:i:s', true],
    ],
    ],
    [
    'class' => Monolog\Handler\RotatingFileHandler::class,
    'constructor' => [
    runtime_path() . '/logs/error.log',
    30,
    Monolog\Logger::ERROR,
    false
    ],

            ],
        ],
    ],

    ];
    设置了 还是不行 2个文件一起写入了

  • nitron 2025-10-13

    应该是顺序错了,config里将error的rotateFileHandler放到最前面

skating

我是重写了Logger类,在系统中使用自己的Logger类,使用方法和之前一样,只是可以记录不同的日志到不同的文件。

  • 暂无评论
lsmir2
<?php

$logPath = runtime_path();
$formatter = [
    'class' => Monolog\Formatter\LineFormatter::class,
    'constructor' => [null, 'Y-m-d H:i:s', true, true],
];

// 公共处理器生成函数
$createHandler = function ($path, $maxFiles = 7) use ($formatter, $logPath) {
    return [
        'class' => Monolog\Handler\RotatingFileHandler::class,
        'constructor' => ["$logPath/logs/$path.log", $maxFiles, Monolog\Logger::DEBUG],
        'formatter' => $formatter
    ];
};

return [
    'default' => ['handlers' => [$createHandler('webman')]], // 0 表示不限制日志文件数量
    'error' => ['handlers' => [$createHandler('error')]],
    'admin' => ['handlers' => [$createHandler('admin/管理员操作')]],
    'queue' => ['handlers' => [$createHandler('queue')]],
    'debug' => ['handlers' => [$createHandler('debug')]],
];
  • 暂无评论
🔝