log4cxx的使用模式
(金慶的專(zhuān)欄)
== 初始化配置 ==
Main.cpp中初始化配置.
如果不需要監(jiān)視配置文件并自動(dòng)重新配置,就不需要調(diào)用configureAndWatch().
執(zhí)行目錄下的log4j.properties是會(huì)自動(dòng)讀取的。
#include <log4cxx/propertyconfigurator.h>
int main()
{
const long WATCH_MILLISECONDS = 5000;
log4cxx::PropertyConfigurator::configureAndWatch(
"log4j.properties", WATCH_MILLISECONDS);
...
}
== 輔助宏 ==
為log4cxx的使用建立輔助宏,如Log.h。
因?yàn)榻?jīng)常與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
(金慶的專(zhuān)欄)
== 初始化配置 ==
Main.cpp中初始化配置.
如果不需要監(jiān)視配置文件并自動(dòng)重新配置,就不需要調(diào)用configureAndWatch().
執(zhí)行目錄下的log4j.properties是會(huì)自動(dòng)讀取的。
#include <log4cxx/propertyconfigurator.h>
int main()
{
const long WATCH_MILLISECONDS = 5000;
log4cxx::PropertyConfigurator::configureAndWatch(
"log4j.properties", WATCH_MILLISECONDS);
...
}
== 輔助宏 ==
為log4cxx的使用建立輔助宏,如Log.h。
因?yàn)榻?jīng)常與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