Log4Qt 使用
1、获取Log4Qt源码
从github拉去Log4Qt源码1
git clone https://github.com/devbean/log4qt
2、单个模块使用Log4Qt
- 新建一个Qt工程,将Log4Qt的src目录拷贝到工程目录下
- 修改工程的pro文件,添加如下代码 - 1 - include(./src/log4qt/log4qt.pri) 
- 引入头文件 - 1 
 2
 3
 4
 5
 6
 include "log4qt/rollingfileappender.h"<br>
 include "log4qt/logger.h"<br>
 include "log4qt/patternlayout.h"<br>
 include "log4qt/propertyconfigurator.h"<br>
 include "log4qt/helpers/properties.h"<br>
- 配置输出格式和日志追加属性 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16- PatternLayout *p_layout = new PatternLayout(); 
 p_layout->setConversionPattern("%d [%p] %m%n");
 // %d 输出日期时间
 // %p 日志级别 (debug, info, warn)
 // %m 日志信息
 // %n 换行
 // %c appender名字
 RollingFileAppender *p_appender = new RollingFileAppender(p_layout, "logfilePath", true);
 // 参数1 模板格式
 // 参数2 日志文件路径,默认当前目录
 // 参数3 是否追加
 p_appender->activateOptions();
 Logger *p_logger = Logger::logger(moduleName);
 p_logger->addAppender(p_appender);
 p_logger->debug("HHHHHHH");
3、多个模块同时使用日志
A、通过代码方式
配置properties // 控制日志的参数
可以定义以下结构体1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22struct logItem
{
    logItem() {}
    logItem(QString module)
    {
        strAppender = appender;
        //! 日志参数
        QString strLogFile = QString("log/%2.log").arg(module);
        Logger *logger = Logger::logger(module);
        PatternLayout *layout = new PatternLayout();
        layout->setConversionPattern("%d [%p] %m%n");
        RollingFileAppender *appender = new RollingFileAppender(layout, strLogFile,true);
        appender->setMaxBackupIndex(10);
        appender->setMaximumFileSize(20000000);
        //appender->setImmediateFlush(false);//是否立刻刷新
        appender->activateOptions();
        logger->addAppender(appender);
        logger->setAdditivity(false);
    }
    QString strAppender;
};
可以将多个日志通过name映射起来1
2
3
4
5QMap<int, logItem> LogModules;
logItem item1(module1);
LogModules.insert(module1, item);
logItem item2(module2);
LogModules.insert(module2, item2);
写日志操作1
2
3
4
5void WriteLog(QString module, QString msg)
{
    Logger *logger = Logger::logger(LogModules.value(module).strAppender);
    logger->debug(msg);
}
B、读取日志配置文件方式
单个配置文件格式如下,多个日志的话更改模块名拷贝一份即可1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#<0>根日志
log4j.rootlogger=DEBUG,default
log4j.appender.default=org.apache.log4j.RollingFileAppender
log4j.appender.default.file=log/default.log
log4j.appender.default.maxFileSize=20000000
log4j.appender.default.maxBackupIndex=10
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=[%d] [%p] %m%n
log4j.appender.default.appendFile=true
#<1>模块
log4j.logger.lht_auth=DEBUG, lht_auth
log4j.appender.lht_auth=org.apache.log4j.RollingFileAppender
log4j.appender.lht_auth.file=log/lht_auth.log
log4j.appender.lht_auth.maxFileSize=20000000
log4j.appender.lht_auth.maxBackupIndex=10
log4j.appender.lht_auth.layout=org.apache.log4j.PatternLayout
log4j.appender.lht_auth.layout.ConversionPattern=[%d] [%p] %m
log4j.appender.lht_auth.appendFile=true
...
// lht_auth为模块名称
读取配置文件写日志1
2PropertyConfigurator::configure(cfgFile);
WriteLog(module, msg);
