在使用log4qt的时候,我们常常需要涉及日志分类,按模块和按级别输出到不同目的地。本人借花献佛,将一朋友在论坛中成功记录在此,方便大伙查阅。
脚本配置
# Libfetion-gui project
# define the root logger with two appenders writing to console and file
log4j.rootLogger =DEBUG,Console
####outputlog to console#########
#define the appender named CONSOLE
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p %x %m%n
log4j.logger.A1=DEBUG,CONSOLE,A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=logs/a1.txt
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
log4j.logger.A2=DEBUG,CONSOLE,A2
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A2.File=logs/a2.txt
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
log4j.logger.A3=DEBUG,CONSOLE,A3
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A3.File=logs/a3.txt
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
这里定义了Console、A1、A2、A3共计3个扩展器,可分别输出到控制台、logs/a1.txt、logs/a2.txt、logs/a3.txt中。
它们是通过定义不同的logger来做到不同位置和级别定位的。由于logger带名称(如A1),也可以为特定重要模块定义自有的日志。
问题 :不知道Console输出到什么地方去了!?
调用示例
Log4Qt::BasicConfigurator::configure();
Log4Qt::PropertyConfigurator::configure(QCoreApplication::applicationDirPath() + "/log4qt.properties");
Log4Qt::Logger *a1 = Log4Qt::Logger::logger("A1");
al->info("the message of log");//the log save at logs/a1.log
Log4Qt::Logger *a2 = Log4Qt::Logger::logger("A2");
a2->info("the message of log");//the log save at logs/a2.log
Log4Qt::Logger *a3 = Log4Qt::Logger::logger("A3");
a3->info("the message of log");//the log save at logs/a3.log