[英]PHP Monolog logger RotatingFileHandler never rotates files
[英]Monolog RotatingFileHandler save to a specific file according to log type
我正在尝试用 monolog 做一些我不确定是否可行的事情。 所以我在想一个实用的方法来组织日志文件。
首先我想有 3 个不同的文件,INFO、WARNING 和 ERROR,但是很难在 de 文件中搜索特定日期。 所以我决定这样组织:
日志
这是我决定要做的
$infoStreamHandler = new \Monolog\Handler\RotatingFileHandler($settings['path_info'].'/info.log', Monolog\Logger::INFO);
$warningStreamHandler = new \Monolog\Handler\RotatingFileHandler($settings['path_warn'].'/warning.log', Monolog\Logger::WARNING);
$errorStreamHandler = new \Monolog\Handler\RotatingFileHandler($settings['path_error'].'/error.log', Monolog\Logger::ERROR);
$logger ->pushHandler($infoStreamHandler);
$logger->pushHandler($warningStreamHandler);
$logger->pushHandler($errorStreamHandler);
但这并不像我预期的那样有效。 我首先尝试使用StreamHandler
,它成功了(但它只为所有日期创建了一个文件),但是一旦我切换到RotatingFileHandler
,它就在所有 3 个文件中保存了相同的警告,而不是仅将其保存在警告日志中。
有什么想法吗?
先感谢您。
如果要将日志划分为./path/to/directory/2017/07/21-yournamelog.log
则需要执行以下操作:
$logger = new Logger('chanel-name');
$handler = new RotatingFileHandler('./path/to/directory/yournamelog.log', 0, Logger::INFO, true, 0664);
# '/' in date format is treated like '/' in directory path
# so Y/m/d-filename will create path: eg. 2017/07/21-filename.log
$handler->setFilenameFormat('{date}-{filename}', 'Y/m/d');
$logger->pushHandler($handler);
$array = ["x" => "y"];
$logger->addInfo('new message', $array);
它将在路径: ./path/to/directory/2017/07/21-yournamelog.log
path/ ./path/to/directory/2017/07/21-yournamelog.log
创建日志文件, ./path/to/directory/2017/07/21-yournamelog.log
包含以下内容:
[2017-07-21 14:33:49] chanel-name.INFO: new message {"x":"y"} []
所以我发现了什么问题。 我错过了一个参数, $maxFiles
。 $infoStreamHandler = new \\Monolog\\Handler\\RotatingFileHandler($settings['path_info'].'/info.log', 0, Monolog\\Logger::INFO);
它现在完美运作!
在较新版本的 symfony(4.4) 中,您可以在旋转处理程序上设置日期格式和文件名格式。
这是来自 monolog yaml 文件的示例:
my_channel:
type: rotating_file
path: "%kernel.logs_dir%/%kernel.environment%.my_channel.log"
level: debug
date_format: 'Y/m/d'
filename_format: '{date}-{filename}'
channels: [my_channel]
它会将其保存在路径“Y/m/d-my_channel.log”中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.