2016-06-04 8 views
0

J'ai des valeurs séparées par des points-virgules enregistrées dans un fichier csv en utilisant log4php. Je voulais écrire un en-tête en première ligne. Comment cela peut-il être fait?Écrire un en-tête dans un journal avec log4php

Exemple

id message, nom de fichier, l'heure de début, heure de fin, l'état MSGID1000; sample.txt; 01: 05: 55; 07: 08: 44; OK MSGID1000; sample.txt ; 01: 05: 55; 07: 08: 44; NOK

Je le fais

csvLogger = Logger::getRootLogger(); 
csvLogger->setLevel(LoggerLevel::toLevel(LoggerLevel::DEBUG)); 
csvLogger->removeAllAppenders(); 

$appender = new LoggerAppenderFile("csvLogAppender"); 
$appender->setFile("LogMessage.csv"); 
$appender->setAppend(false); 

csvLogger->addAppender($appender); 

Répondre

0

Je trouve la solution pour étendre LoggerLayoutPattern et remplacer la méthode getHeader().

class csvLoggerLayoutPattern extends LoggerLayoutPattern { 
    public function getHeader() { 
     return "message id, file name, start time, end time, status\n"; 
    } 
} 

csvLogger = Logger::getRootLogger(); 
csvLogger->setLevel(LoggerLevel::toLevel(LoggerLevel::DEBUG)); 
csvLogger->removeAllAppenders(); 

$appender = new LoggerAppenderFile("csvLogAppender"); 
$appender->setFile("LogMessage.csv"); 
$appender->setAppend(false); 

$appenderlayout = new csvLoggerLayoutPattern(); 
$appenderlayout->activateOptions(); 
$appender->setLayout($appenderlayout); 

csvLogger->addAppender($appender);