gpt4 book ai didi

php - 如何使用 monolog 设置日志文件的最大大小

转载 作者:行者123 更新时间:2023-12-05 02:12:54 28 4
gpt4 key购买 nike

我使用了 monolog,不知道如何设置最大文件日志大小。

我尝试使用 MemoryPeakUsageProcessor,但我认为我的代码有误:

$formatter = new LineFormatter(
null, // Format of message in log, default [%datetime%] %channel%.%level_name%: %message% %context% %extra%\n
null, // Datetime format
true, // allowInlineLineBreaks option, default false
true // ignoreEmptyContextAndExtra option, default false
);
$logger = new Logger($logName);
$logSize= new Monolog\Processor\MemoryPeakUsageProcessor(20);
$logger->pushProcessor($logSize);
$stream = new RotatingFileHandler(__DIR__.'./../../app.log',1);
$stream->setFormatter($formatter);
$logger->pushHandler($stream);

但没有设置最大大小。当超过容量时,它不会删除或清空我的日志文件

最佳答案

因为大小限制在所有的Monolog Handlers中都不存在,所以我不得不写它。请在下面找到我为 Slim 3 框架编写的解决方案。我相信你可以根据自己的情况调整它

// SLIM 3 framework, from dependencies.php
...

// monolog setup with rotating files according to a size
$container['logger'] = function ($c) {
// get the settings (array, see below)
$settings = $c->get('settings')['logger'];

// rotate log file on size
$logname = $settings['path'];
if (file_exists($logname) && filesize($logname) > $settings['maxSize']) {
$path_parts = pathinfo($logname);
$pattern = $path_parts['dirname']. '/'. $path_parts['filename']. "-%d.". $path_parts['extension'];

// delete last log
$fn = sprintf($pattern, $settings['maxFiles']);
if (file_exists($fn))
unlink($fn);

// shift file names (add '-%index' before the extension)
for ($i = $settings['maxFiles']-1; $i > 0; $i--) {
$fn = sprintf($pattern, $i);
if(file_exists($fn))
rename($fn, sprintf($pattern, $i+1));
}
rename($logname, sprintf($pattern, 1));
}

$stream = new Monolog\Handler\StreamHandler($logname, $settings['level']);

// declare finally the logger
$logger = new Monolog\Logger($logname);
$logger->pushHandler($stream);

return $logger; // ready to log ;)
};

...

下面是数组中 Monolog 设置的示例

'logger' => [
'name' => 'helloStack',
'path' => __DIR__ . '/../logs/app.log',
'level' => \Monolog\Logger::NOTICE,
'maxSize' => 100000, // rotate log if exceeds 100Kb
'maxFiles' => 3
],

关于php - 如何使用 monolog 设置日志文件的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com