2016-05-12 65 views
2

我試圖做一些monolog,我不知道這是可能的。所以我想到了一種組織日誌文件的實用方法。Monolog RotatingFileHandler根據日誌類型保存到一個特定的文件

首先,我認爲有3個不同的文件,信息,警告和錯誤,但它很難搜索de文件中的特定日期。所以我決定組織這樣的:

日誌

  • | _信息 | _Year | _12-05-2016.log
  • | _Warning | _Year | _12-05-2016。登錄
  • | _Error | _Year | _12-05-2016.log

這裏的WH在我決定做

$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個文件中保存相同的警告,而不是僅將它保存在警告日誌中。

有什麼想法?

預先感謝您。

回答

1

所以我剛剛發現是什麼問題。 我錯過了一個參數,$maxFiles$infoStreamHandler = new \Monolog\Handler\RotatingFileHandler($settings['path_info'].'/info.log', 0, Monolog\Logger::INFO);

它現在完美的工作!

4

如果你想你的日誌劃分到./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'); 
$ogger->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"} [] 
相關問題