У меня есть значения, разделенные точкой с запятой, записанные в CSV-файл, используя log4php.
Я хотел написать заголовок в первой строке. Как это можно сделать?
пример
идентификатор сообщения, имя файла, время начала, время окончания, статус
MSGID1000; sample.txt; 01: 05: 55; 07: 08: 44; OK
MSGID1000; sample.txt; 01: 05: 55; 07: 08: 44; норвежские кроны
я сделаю это
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);
Я нашел решение продлить LoggerLayoutPattern
и переопределить 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);
Других решений пока нет …