log4cxx的使用模式

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


你可能感兴趣的:(log4cxx的使用模式)