b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

log4cpp_log4qt_log4cpp全局对象(2)

电脑杂谈  发布时间:2016-12-26 04:00:47  来源:网络整理

category 类真正完成记录日志功能,两个主要组成部分是appenders和priority(优先级)。优先级控制哪类日志信息可以被这个category记录,当前优先级分为:NOTSET, DEBUG, INFO, NOTICE, WARN, ERROR, CRIT, ALERT 或 FATAL/EMERG 。每个日志信息有个优先级,每个category有个优先级,当消息的优先级大于等于category的优先级时,这个消息才会被category记录,否则被忽略。优先级的关系如下。category类和appender的关系是,多个appender附在category上,这样一个日志消息可以同时输出到多个设备上。

NOTSET < DEBUG < INFO < NOTICE < WARN < ERROR < CRIT < ALERT < FATAL = EMERG

log4cpp全局对象_log4qt_log4cpp

category被组织成一个树,子category创建时优先级缺省NOTSET,category缺省会继承父category的appender。而如果不希望这种appender的继承关系,log4cpp允许使用additivity 标签,为false时新的appender取代category的appender列表。

为了更好的理解上面的概念下面以手动使用方式举例。

2. 手动使用步骤

手动使用log4cpp的基本步骤如下:

实例化一个layout 对象;

初始化一个appender 对象;

把layout对象附着在appender对象上;

调用log4cpp::Category::getInstance("name"). 实例化一个category对象;

把appender对象附到category上(根据additivity的值取代其他appender或者附加在其他appender后)。

设置category的优先级;

// FileName: test_log4cpp1.cpp 
// Test log4cpp by manual operation. 
// Announce: use as your own risk. 
// Compile : g++ -otest1 -llog4cpp test_log4cpp1.cpp 
// Run     : ./test1 
// Tested  : RedHat 7.2 log4cpp0.3.4b 
// Author  : liqun (liqun@nsfocus.com) 
// Data    : 2003-6-27 
#include "log4cpp/Category.hh" 
#include "log4cpp/FileAppender.hh" 
#include "log4cpp/BasicLayout.hh" 
int main(int argc, char* argv[]) 
{
	// 1实例化一个layout 对象         
	log4cpp::Layout* layout = new log4cpp::BasicLayout();         
	// 2. 初始化一个appender 对象  
	log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender", "./test_log4cpp1.log");  
	// 3. 把layout对象附着在appender对象上  
	appender->setLayout(layout);  
	// 4. 实例化一个category对象  
	log4cpp::Category& warn_log = log4cpp::Category::getInstance("mywarn");  
	// 5. 设置additivity为false,替换已有的appender         
	warn_log.setAdditivity(false);  
	// 5. 把appender对象附到category上  
	warn_log.setAppender(appender);  
	// 6. 设置category的优先级,低于此优先级的日志不被记录  
	warn_log.setPriority(log4cpp::Priority::WARN);  
	// 记录一些日志  
	warn_log.info("Program info which cannot be wirten");  
	warn_log.debug("This debug message will fail to write");  
	warn_log.alert("Alert info");  
	// 其他记录日志方式  
	warn_log.log(log4cpp::Priority::WARN, "This will be a logged warning");  
	log4cpp::Priority::PriorityLevel priority;  
	bool this_is_critical = true;  
	if(this_is_critical)   
		priority = log4cpp::Priority::CRIT;  
	else   
		priority = log4cpp::Priority::DEBUG;  
	warn_log.log(priority,"Importance depends on context");    
	warn_log.critStream() << "This will show up << as "   << 1 << " critical message"   << log4cpp::CategoryStream::ENDLINE;  
	// clean up and flush all appenders  log4cpp::Category::shutdown();  
	return 0; 
} 


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23406-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...