Posted on 2009-02-16 23:32
S.l.e!ep.¢% 閱讀(503)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
C++
log4cxx調(diào)試日志選擇性輸出的配置方法
(轉(zhuǎn)載請(qǐng)注明來(lái)源于金慶的專(zhuān)欄)
一般是每個(gè)類(lèi)都有自己的日志, 可建立一個(gè)靜態(tài)成員logger如下:
class A
{
private:
?? ?static log4cxx::LoggerPtr logger;
};
需要在cpp文件中靜態(tài)初始化:
log4cxx::LoggerPtr A::logger = log4cxx::Logger::getLogger("A");
日志類(lèi)別名"A"就是類(lèi)名, 也可以是模塊名.類(lèi)名, 如"DB.A".
log4cxx的慣例是使用這樣一個(gè)靜態(tài)成員.
但也可以是靜態(tài)成員logger(), 這樣不必靜態(tài)初始化.
class A
{
private:
?? ?static log4cxx::LoggerPtr logger()
?? ?{
?? ??? ?return log4cxx::Logger::getLogger("A");
?? ?}
};
但從效率考慮, 每次調(diào)用日志都要getLogger()不如靜態(tài)初始化.
類(lèi)代碼中調(diào)用日志只需:
?? ?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
默認(rèn)所有日志等級(jí)為WARN, 不會(huì)輸出DEBUG日志,
只需顯式設(shè)定某一類(lèi)日志的級(jí)別, 就可以選擇性地輸出該類(lèi)日志.
如調(diào)試A類(lèi)時(shí), 取消配置文件中的注釋就行了.