2017-08-17 2 views
1

Mon objet de consignation génère des tableaux vides à la fin de chaque ligne - [] []. Par exemple;Monolog Logger génère des tableaux vides à la fin de chaque message de journal

[2017-08-17 12:26:02] import_log.INFO: checkForDuplicates :: is_processing [] []
[17/08/2017 12:26:04] import_log.INFO: est double [] []

Y at-il de toute façon que je peux empêcher cela de se produire? Je veux juste vous connecter sans les tableaux vides, à savoir, comme les suivants:

[2017-08-17 12:26:02] import_log.INFO: checkForDuplicates :: is_processing
[2017-08- 17 12:26:04] import_log.INFO: est un doublon

Je crée mes propres journaux comme ceci:

protected function importXML($fName) { 

    // Create a log file for each XML file imported 
    $logger = new Logger("import_log"); 
    $logger->pushHandler(new StreamHandler(storage_path('./logs/' . $fName . '.log')), Logger::INFO); 

    .... 

    $logger->info($myString); 


    .... 

    $logger->info($myObject); 
} 

Répondre

2

Ces tableaux vides sont le contexte et attributs supplémentaires de votre entrée de journal. Le contexte est fourni en tant que paramètre de tableau supplémentaire lorsque vous ajoutez une entrée de journal. Extra est rempli par "processeurs" que vous attachez à votre enregistreur.

Ces tableaux vides peuvent être cachés:

Lorsque vous ne définissez pas formatter pour Monologue, il utilisera une valeur par défaut LineFormatter. L'un des constructor parameters pour l'un LineFormatter est l'option que vous recherchez:

public function __construct(string $format = null, string $dateFormat = null, bool $allowInlineLineBreaks = false, bool $ignoreEmptyContextAndExtra = false) 

Plus précisément, la 4ème option est pertinente - bool $ignoreEmptyContextAndExtra = false. Si vous créez votre propre formatter:

$formatter = new LineFormatter(null, null, false, true); 

Donnez à votre gestionnaire:

Cela devrait empêcher l'enregistreur de montrer des tableaux vides pour « contexte » et « extra ».