Welcome 微信登录

首页 / 操作系统 / Linux / Linux下日志设备文件-----logger

刚接触logger,所有的记录信息都是写在一个日志文件中,后来发现这样查看起来不太方便,于是想分类,比如info信息专门一个文件,error信息专门一个文件。之前的日志配置文件log4qt.conf是这样的:### set log levels ###
log4j.rootLogger =DEBUG, DLOG
 
 
###%d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n###
 
### 写入文件###
log4j.appender.DLOG = Log4Qt::FileAppender
log4j.appender.DLOG.File = logs/log.log
log4j.appender.DLOG.AppendFile = true
log4j.appender.DLOG.layout = Log4Qt::PatternLayout
log4j.appender.DLOG.layout.ConversionPattern = [VeeLang] %-d{yyyy-MM-dd HH:mm:ss}  [%r ms] %l [%-5p] [%c] - %m

就是DEBUG级别以上的都可以写进log/log.log中。代码实现引用:#include "logger.h"
#include "propertyconfigurator.h"
#include "logmanager.h".h:
    private:                                                             
        mutable Log4Qt::ClassLogger mLog4QtClassLogger;                 
    public:                                                             
        inline Log4Qt::Logger *logger() const                           
        { return mLog4QtClassLogger.logger(this);    }                 
    private:
.cpp
    Log4Qt::PropertyConfigurator::configure(a.applicationDirPath()+"/Configuration/log4qt.conf");
    Log4Qt::Logger *logger = Log4Qt::LogManager::rootLogger();

    logger->info("Application began to run---NH3-10");这样就实现了日志记录。目前要做的是记录在不同的日志文件中。修改log4qt.conf:

### set log levels ###
 
 
 
###%d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n###
 
###输出到文件 ###
log4j.logger.A1=INFO,A1
log4j.appender.A1= Log4Qt::FileAppender
log4j.appender.A1.File = logs/log.log
log4j.appender.A1.AppendFile = true
log4j.appender.A1.layout = Log4Qt::PatternLayout
log4j.appender.A1.layout.ConversionPattern = [SZom] %-d{yyyy-MM-dd HH:mm:ss}  [%r ms] %l [%-5p] [%c] - %m
 
 
###输出到文件 ###
log4j.logger.A2=WARN,A2
log4j.appender.A2 = Log4Qt::FileAppender
log4j.appender.A2.File = logs/error.log
log4j.appender.A2.AppendFile = true
log4j.appender.A2.layout = Log4Qt::PatternLayout
log4j.appender.A2.layout.ConversionPattern = [SZom] %-d{yyyy-MM-dd HH:mm:ss}  [%r ms] %l [%-5p] [%c] - %m
 


意思是在log.log和error.log中分别记录信息本来是加log4j.appender.A1.Threshold = INFO做区分,不过执行的时候出了问题,CSDN上看到有人这么处理(http://bbs.csdn.net/topics/390344244)代码里实现如下:.cpp:
    Log4Qt::PropertyConfigurator::configure("./logs/log4qt.conf");
    Log4Qt::Logger *logInfo = Log4Qt::Logger::logger("A1");
    Log4Qt::Logger *logError = Log4Qt::Logger::logger("A2");
    logInfo->info("Application begin....");
    logError->warn("Application begin....");以后分别用logInfo 和logError操作,分析了下后发现其实就是定义了两个文件,然后再设置级别。[level]级别如下:FATAL      0  
ERROR     3  
WARN      4  
INFO        6  
DEBUG     7
本文永久更新链接地址