Я хотел бы записывать журналы в CSV-файлы каждую минуту, эти CSV-файлы должны храниться в разных папках, т. Е. 60-минутные файлы журнала в папке первого часа и еще 60 минут, которые должны быть папкой следующего часа.
Когда я использую DailyRollingFileAppender, что приводит к исключению после завершения определенного часа, пока не произойдет исключение, файлы создаются как обычно.
Если я начинаю запись в 12:14 и работает нормально до 12:59, и возникает исключение.
#include <unistd.h>
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>
using namespace log4cxx;
using namespace log4cxx::helpers;
// Define static logger variable
LoggerPtr loggerMyMain(Logger::getLogger(""));
LoggerPtr loggerFunctionA(Logger::getLogger(""));
void functionA() {
LOG4CXX_INFO(loggerFunctionA, "Executing functionA.");
usleep(2000);
}
int main() {
int value = 5;
// Load properties style configuration file using PropertyConfigurator
PropertyConfigurator::configure("log4j.properties");
for(int j = 1; j < 10000; j++) {
LOG4CXX_TRACE(
loggerMyMain,
"this is a debug message for detailed code discovery. Value=" << j);
LOG4CXX_DEBUG(loggerMyMain, "this is a debug message.");
LOG4CXX_INFO(loggerMyMain, "this is a info message, ignore. Value=" << j);
LOG4CXX_WARN(loggerMyMain, "this is a warn message, not too bad.");
LOG4CXX_ERROR(loggerMyMain,
"this is a error message, something serious is happening.");
LOG4CXX_FATAL(loggerMyMain, "this is a fatal message!!!");
functionA();
if(j > 9998) j = 1;
}
return 0;
}
Файл конфигурации log4j.properties
:
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender
# Set the name of the file
#log4j.appender.FILE.File=${'folder'/}
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=false
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, should not overwrite
log4j.appender.FILE.Append=false
# Set the DatePattern
log4j.appender.FILE.DatePattern=yyyy-MM/yyyy-MM-dd/yyyy-MM-dd-HH/yyyy-MM-dd_HH:mm'.''csv'
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
вывод:
g++ file.cpp -lapr-1 -laprutil-1 -llog4cxx -o kk
kk@deb:~/logs/logcfg$ ./kk
log4cxx: Exception during rollover
ожидаемая структура выпуска
day01-|
|----hour1 |----min1.csv
| |----min2.csv
| |----min60.csv
|----hour-N
|----min1.csv
|----min60.csv