gpt4 book ai didi

php - Monolog RotatingFileHandler 根据日志类型保存到特定文件

转载 作者:可可西里 更新时间:2023-10-31 23:02:22 26 4
gpt4 key购买 nike

我正在尝试用 monolog 做一些我不确定是否可行的事情。所以我在想一个实用的方法来组织日志文件。

首先我想有 3 个不同的文件,INFO、WARNING 和 ERROR,但是很难在 de 文件中搜索特定日期。所以我决定这样组织:

日志

  • |_ 信息 |_年 |_12-05-2016.log
  • |_警告 |_年 |_12-05-2016.log
  • |_错误 |_年 |_12-05-2016.log

这是我决定要做的

$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 内容:

[2017-07-21 14:33:49] chanel-name.INFO: new message {"x":"y"} []

关于php - Monolog RotatingFileHandler 根据日志类型保存到特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182954/

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