当前位置: 首页 > news >正文

墨星写作网站柳州网站建设招聘

墨星写作网站,柳州网站建设招聘,咋做抽奖网站,mooc网站开发案例为什么要用log4cpp记录项目日志 在通常情况下#xff0c;Linux/UNIX 每个程序在开始运行的时刻#xff0c;都会打开 3 个已经打开的 stream. 分别用来输入#xff0c;输出#xff0c;打印错误信息。通常他们会被连接到用户终端。这 3 个句柄的类型为指向 FILE 的指针。可以…为什么要用log4cpp记录项目日志 在通常情况下Linux/UNIX 每个程序在开始运行的时刻都会打开 3 个已经打开的 stream. 分别用来输入输出打印错误信息。通常他们会被连接到用户终端。这 3 个句柄的类型为指向 FILE 的指针。可以被 fprintf、fread等函数使用他们在程序开始启动后stdin, stdout, and stderr 的文件描述符是 0, 1 和 2其它的文件描述符则排在其后。 很多时候会用 printf 打印信息来调试程序但是如果终端关掉了那怎么显示 printf 的调试信息呢log4cpp就可以解决这个问题. 1 log4cpp安装 wget https://nchc.dl.sourceforge.net/project/log4cpp/log4cpp-1.1.x%20%28ne w%29/log4cpp-1.1/log4cpp-1.1.3.tar.gztar -zxvf log4cpp-1.1.3.tar.gzcd log4cpp./configure --prefix安装路径makemake install 2确定 log4cpp 头文件库 找头文件./log4cpp/include/log4cpp 找到对应的库./log4cpp/src/.libs 3 log4cpp日志说明 3-1 设置日志信息输出方式 #include log4cpp/Category.hh #include log4cpp/FileAppender.hh #include log4cpp/PatternLayout.hh #include log4cpp/OstreamAppender.hh// 以root的身份将信息输出到 std::cout //log4cpp::Appender *appender new log4cpp::OstreamAppender(root,std::cout);// 以root的身份将信息输出到 log 文件 log4cpp::Appender *appender new log4cpp::FileAppender(root,test.log);日志信息appender方式注释log4cpp::FileAppender输出到文件log4cpp::RollingFileAppender输出到回卷文件即当文件到达某个大小后回卷log4cpp::OstreamAppender输出到一个 ostream 类log4cpp::RemoteSyslogAppender输出到远程 syslog 服务器log4cpp::StringQueueAppender内存队列log4cpp::SyslogAppender本地 sysloglog4cpp::Win32DebugAppender发送到缺省系统调试器log4cpp::NTEventLogAppender发送到 win 事件日志 日志输出到终端或者文件中实际上是很慢的会引起 IO 中断可以输出到内存里 StringQueueAppender然后从 StringQueueAppender 输出到其它地方这样线程执行效率是比较高效的。 3-2 设置日志信息输出格式 log4cpp::PatternLayout *patternLayout new log4cpp::PatternLayout(); patternLayout-setConversionPattern(%d [%p] - %m%n); appender-setLayout(patternLayout);patternLayout-setConversionPattern( )支持以下一组格式字符 日志格式字符注释%%百分比符号%c日志类别%d日期格式日期格式字符后面可以跟一个日期格式,括在大括号之间的说明符。例如%d%\H:%M:%S%l 或 %d%S\d%M%Y%H:%\M:%S%l}。如果没有给出日期格式说明符则使用以下式“Wed Jan 02 02:03:55 1980”。%l表示毫秒。%m消息%n特定于平台的行分隔符%p优先级%r自创建此布局以来的毫秒%R自1970年1月1日起的秒数(时间戳)%u进程启动后的时钟周期%xNDC%t线程名称 默认情况下PatternLayout-ConversionPattern( )设置为“%m%n”。 3-3 设置 日志输出类别(category) 和 日志优先级priority log4cpp::Category root log4cpp::Category::getRoot(); //设置在配置文件里 root.setPriority(log4cpp::Priority::NOTICE); root.addAppender(appender);日志的级别总共有 NOTSET DEBUG INFO NOTICE WARN ERROR CRIT ALERT FATAL EMERG。 日志级别的意思是低于该级别的日志不会被记录。 3-4设置 日志操作的宏 #define LOG(__level) log4cpp::Category::getRoot() log4cpp::Priority::__level __FILE__ __LINE__ : 3-5 使用 日志操作的宏 记录日志 LOG(DEBUG) i am happy.; LOG(INFO) oh, you happy, we happy.; LOG(NOTICE) please do not contact me. ; LOG(WARN) i am very busy now.; LOG(ERROR) oh, what happed?;4 使用封装log4cpp(单例)并使用Cmake编译项目 4-0 log4cpp_demo.conf #定义 rootCategory 的属性 log4cpp.rootCategoryDEBUG, RootLog#定义 RootLog 属性 log4cpp.appender.RootLog RollingFileAppender log4cpp.appender.RootLog.layout PatternLayout log4cpp.appender.RootLog.layout.ConversionPattern%d{%m - %d %H:%M:%S %l} [%t][%p]%m%n log4cpp.appender.RootLog.fileName ./log4cpp_Loger.log log4cpp.appender.RootLog.maxFileSize 268435456 #256MB log4cpp.appender.RootLog.fileNamePattern log4cpp_Loger%i.log log4cpp.appender.RootLog.maxBackupIndex 2564-1 Loger.h #ifndef DISTRIBUTED_LOGGER_H_ #define DISTRIBUTED_LOGGER_H_#include string #include log4cpp/Category.hh#define LOG_INFO Logger::instance()-GetHandle()-info #define LOG_DEBUG Logger::instance()-GetHandle()-debug #define LOG_ERROR Logger::instance()-GetHandle()-error #define LOG_WARN Logger::instance()-GetHandle()-warnclass Logger { public:Logger();~Logger();//初始化bool init(const std::string log_conf_file);//获取单例static Logger* instance() { return instance_; }//获取使用日志接口log4cpp::Category* GetHandle() { return category_; };protected://对象实例static Logger instance_;log4cpp::Category* category_;};#endif4-2 Loger.cpp #include Loger.h #include iostream #include log4cpp/Category.hh #include log4cpp/FileAppender.hh #include log4cpp/PatternLayout.hh #include log4cpp/OstreamAppender.hh #include log4cpp/RemoteSyslogAppender.hh #include log4cpp/PropertyConfigurator.hhLogger Logger::instance_; Logger::Logger() {}Logger::~Logger() {}bool Logger::init(const std::string log_conf_file) {try{//日志输出log4cpp::PropertyConfigurator::configure(log_conf_file);}catch (log4cpp::ConfigureFailure f){std::cerr load log config file log_conf_file.c_str() failed with result: f.what() std::endl;return false;}category_ log4cpp::Category::getRoot();return true; }4-3 main.cpp #include Loger.h #include iostream #include unistd.husing namespace std; int main(int argc, char **argv) {if (argc ! 2)//传入参数不合法{printf(Please input format your process .conf file config !\n);return -1;}Logger* config Logger::instance();//配置文件加载信息if (!config-init(std::string(argv[1]))) //配置文件加载失败{printf(load %s failed.\n, argv[1]);return -2;}LOG_DEBUG(load %s finsh.,argv[1]);return 0; }4-4 CMakeLists.txt CMAKE_MINIMUM_REQUIRED(VERSION 3.5) #工程名 PROJECT(log4cpp_demo) #将指定的目录头文件添加到编译器的头文件搜索路径之下 INCLUDE_DIRECTORIES(./third/include)#将指定的目录库文件添加需要链接的库文件目录之下 LINK_DIRECTORIES(./third/lib/log4cpp)#内置变量:CMAKE_SOURCE_DIR 定义了顶级CMakeLists.txt 所在文件夹 #PROJECT_SOURCE_DIR定义了包含project()命令的CmakeLists.txt所在的文件夹 #搜集所有在指定路径下的源文件名,将输出结果储存在指定的变量中 aux_source_directory(${PROJECT_SOURCE_DIR} SOURCE_FILES)#使用给定的源文件,为工程引入一个可执行文件 ADD_EXECUTABLE(log4cpp_demo ${SOURCE_FILES})#用来显示的定义变量(注意:加上-pthread) SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}-pthread -rdynamic -Wall -g3 -m64 -pipe -stdc0x -lrt -Wno-reorder -Wdeprecated-declarations -fpermissive )#该指令的作用为目标文件与库文件进行链接 #TARGET_LINK_LIBRARIES(log4cpp_demo log4cpp) target_link_libraries(log4cpp_demo pthread) target_link_libraries(${PROJECT_NAME} liblog4cpp.a) #设置默认安装目录 SET(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR})#安装 INSTALL(TARGETS log4cpp_demo DESTINATION bin) 4-5 编译项目 cmake .make 4-6 执行程序
http://www.hkea.cn/news/14467106/

相关文章:

  • 国外网站需要备案吗帮人管理网站做淘宝客
  • 太原网站建设哪家效益快windows iis运行php网站
  • 网站设计公司 广州企业做网站便宜
  • 山东高密网站建设网站建设课程报告
  • 河池市都安县建设局网站网站 功能需求
  • 备案网站多长时间烂网站做竞价行吗
  • 网站建设与管理中专个人网站备案 备注
  • 一个用户注册的网站怎么做百度收录申请入口
  • 手机微网站开发书籍seo如何网站正常更新
  • 如何选择专业网站开发商网站建设的毕业设计成果
  • 网站建设加排名要多少做网站 广告费 步骤
  • 专做定制的网站wordpress 面包屑导航修改
  • 网站建设情况存在问题广州番禺人才网
  • 西安模板建站网站途牛旅游线路网站建设分析
  • 设计网站物理结构怎么做厦门建设局领导
  • 网站需备案php源码项目门户网站开发
  • 哪个网站有适合小学生做的题wordpress 制作侧边栏
  • 江苏商城网站制作公司教育 网站模板
  • 建设城市2的游戏在哪个网站鞍山网站制作推广
  • 广州互帮物流哪家公司做的网站石龙网站仿做
  • 许昌市住房和城乡建设局门户网站前十名少儿编程机构
  • 做区位图的网站wordpress文章关联
  • 秦皇岛市网站建设伊犁建设网站
  • 常熟做网站的公司海外平台推广方法
  • 热搜榜排名前十seo顾问
  • 宜宾网站建设多少钱河南生产型企业网站建设
  • 重庆可作为推广的网站wordpress首页显示友链
  • 男士手表网站网站开发招聘简历模板
  • sae网站代备案wordpress增加文章目录
  • 网站建设公司广告语建设网站的项目策划书