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