Posted on 2009-02-16 23:32
S.l.e!ep.¢% 閱讀(503)
評論(0) 編輯 收藏 引用 所屬分類:
C++
log4cxx調試日志選擇性輸出的配置方法
(轉載請注明來源于金慶的專欄)
一般是每個類都有自己的日志, 可建立一個靜態成員logger如下:
class A
{
private:
?? ?static log4cxx::LoggerPtr logger;
};
需要在cpp文件中靜態初始化:
log4cxx::LoggerPtr A::logger = log4cxx::Logger::getLogger("A");
日志類別名"A"就是類名, 也可以是模塊名.類名, 如"DB.A".
log4cxx的慣例是使用這樣一個靜態成員.
但也可以是靜態成員logger(), 這樣不必靜態初始化.
class A
{
private:
?? ?static log4cxx::LoggerPtr logger()
?? ?{
?? ??? ?return log4cxx::Logger::getLogger("A");
?? ?}
};
但從效率考慮, 每次調用日志都要getLogger()不如靜態初始化.
類代碼中調用日志只需:
?? ?LOG4CXX_DEBUG(logger, "test log...");
日志配置log4j.properties如下:
log4j.rootLogger=WARN, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=log.txt
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %5p %c %x: %m%n
# log4j.logger.DB.A=DEBUG
默認所有日志等級為WARN, 不會輸出DEBUG日志,
只需顯式設定某一類日志的級別, 就可以選擇性地輸出該類日志.
如調試A類時, 取消配置文件中的注釋就行了.