金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  422 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
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
posted on 2011-11-24 18:02 金庆 阅读(1100) 评论(3)  编辑 收藏 引用 所属分类: 1. C/C++

评论

# re: log4cxx的使用模式 2012-02-14 22:25 玉兔
linux程序使用log4cxx输出日志后,删除正在生成的日志文件,日志文件不会自动生成,请问这个问题该如何解决?  回复  更多评论
  

# re: log4cxx的使用模式 2012-02-15 10:15 金庆
@玉兔
方法1: 不要删正打开的日志。
方法2: 修改log4cxx代码,让它自动生成新的日志。  回复  更多评论
  

# re: log4cxx的使用模式 2012-04-27 18:02 金庆
宏定义需要使用 do { ... } while(0) 包裹,不然 if (...) LOG_DEBUG("n", "m"); else ... 会报编译错误。  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理