log4cxx的使用模式

(金庆的专栏)

== 初始化配置 ==

Main.cpp中初始化配置.
如果不需要监视配置文件并自动重新配置,就不需要调用configureAndWatch().
执行目录下的log4j.properties是会自动读取的。

#include <log4cxx/propertyconfigurator.h> 


int main() 

{ 

    const long WATCH_MILLISECONDS = 5000; 

    log4cxx::PropertyConfigurator::configureAndWatch( 

        "log4j.properties", WATCH_MILLISECONDS); 

    ... 

}


== 辅助宏 ==

为log4cxx的使用建立辅助宏,如Log.h。
因为经常与boost::format配合使用,所以添加了该头文件。

// Log.h 

// log4cxx helper. 


#pragma once 


#include <boost/format.h> 

#include <log4cxx/logger.h> 


#define LOG_DEBUG(name, message) { \ 

    LOG4CXX_DEBUG(::log4cxx::Logger::getLogger(name), message); } 

... 

#define LOG_FATAL(name, message) { \ 

    LOG4CXX_FATAL(::log4cxx::Logger::getLogger(name), message); } 

     

== 使用宏 == 


在User.cpp中使用. 


#include "Log.h" 


const char LOG[] = "User"; 


void foo() 

{ 

    LOG_DEBUG(LOG, boost::format("%1% %2%") % "Hello" % "World"); 

    ... 

} 


== log4j.properties ==



配置文件 log4j.properties 如下:

log4j.debug = true 


#log4j.rootLogger = WARN, R 

log4j.rootLogger = INFO, R, C 


log4j.appender.R = org.apache.log4j.RollingFileAppender 

log4j.appender.R.File = log.txt 

log4j.appender.R.MaxBackupIndex = 100 

log4j.appender.R.layout = org.apache.log4j.PatternLayout 

log4j.appender.R.layout.ConversionPattern = %d %5p %c %x - %m%n 


log4j.appender.C = org.apache.log4j.ConsoleAppender 

log4j.appender.C.layout = org.apache.log4j.PatternLayout 

log4j.appender.C.layout.ConversioinPattern = %d %5p %c %x - %m%n 


# Levels: DEBUG, INFO, WARN, ERROR, FATAL 

log4j.logger.main = INFO 

log4j.logger.User = DEBUG