我想每分钟将日志记录到csv文件中,这些csv文件需要保存在不同的文件夹中,例如,第一个小时的文件夹中有60分钟的日志文件,而下一个小时的文件夹中又需要60分钟。 / p>
当我使用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