摘要: 日志系统的另一个基本功能就是能够让使用者按照自己的意愿来控制什么时候,哪些log信息可以输出。如果能够让用户在任意时刻设置允许输出的LogLevel的信息就好了,log4cplus通过LogLevelManager、LogLog、Filter三种方式实现了上述功能。### 优先级控制 ###在研究LogLevelManager之前,首先介绍一下log4cplus中logger的存储机制,在log4cplus中,所有logger都通过一个层次化的结构(其实内部是hash表)来组织的,有一个Root级别的logger,可以通过以下方法获取: Logger root = Logger::getRoo 阅读全文
posted @ 2012-04-25 09:39 笑笑小白 阅读(2818) 评论(0) 推荐(1)
摘要: 本文介绍了三种控制输出格式的布局管理器的概念和使用情况,通过掌握这些知识,可以更有效地控制log系统输出尽可能贴近你需求的信息来。### 如何控制输出消息的格式 ###前面已经讲过,log4cplus通过布局器(Layouts)来控制输出的格式,log4cplus提供了三种类型的Layouts,分别是SimpleLayout、PatternLayout、和TTCCLayout。其中:1. SimpleLayout是一种简单格式的布局器,在输出的原始信息之前加上LogLevel和一个"-"。比如以下代码片段: ... ... /* step 1: Instantiate an 阅读全文
posted @ 2012-04-25 09:38 笑笑小白 阅读(3161) 评论(0) 推荐(1)
摘要: 将log信息记录到文件应该说是日志系统的一个基本功能,log4cplus在此基础上,提供了更多的功能,可以按照你预先设定的大小来决定是否转储,当超过该大小,后续log信息会另存到新文件中,依次类推;或者按照日期来决定是否转储。本文将详细介绍这些用法。### 如何将log记录到文件 ###我们在例5中给出了一个将log记录到文件的例子,用的是FileAppender类实现的,log4cplus提供了三个类用于文件操作,它们是FileAppender类、RollingFileAppender类、DailyRollingFileAppender类。1. FileAppender类实现了基本的文件操作 阅读全文
posted @ 2012-04-25 09:38 笑笑小白 阅读(2983) 评论(0) 推荐(1)
摘要: 本文介绍了使用log4cplus有六个步骤,并提供了一些例子引导你了解log4cplus的基本使用。### 基本使用 ###使用log4cplus有六个基本步骤:1. 实例化一个appender对象2. 实例化一个layout对象3. 将layout对象绑定(attach)到appender对象4. 实例化一个logger对象,调用静态函数:log4cplus::Logger::getInstance("logger_name")5. 将appender对象绑定(attach)到logger对象,如省略此步骤,标准输出(屏幕)appender对象会绑定到logger6. 设 阅读全文
posted @ 2012-04-25 09:37 笑笑小白 阅读(1980) 评论(0) 推荐(0)
摘要: log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工程中会比较专业的,:),本文介绍了log4cplus基本概念,以及如何安装,配置。### 简介 ###log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 你可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份等等。 阅读全文
posted @ 2012-04-25 09:35 笑笑小白 阅读(2097) 评论(1) 推荐(0)
摘要: 1.static有什么用途?(请至少说明两种)1)函数体内,声明为static的变量,在函数调用中其值不变。2) 在同一个文件内(但在函数体外),声明为静态的变量,可被本文件内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用( &)与指针(*)有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。4) 引用没有 const,指针有 const 阅读全文
posted @ 2012-04-24 12:06 笑笑小白 阅读(2464) 评论(0) 推荐(2)
摘要: 互斥锁和条件变量是出自Posix线程标准,用来同步一个进程中各个线程的,同时也可以用来同步几个进程间的,不过这需要此互斥锁和条件变量是存放在多个进程间共享的某个内存区的。互斥锁上锁与解锁:1#include <pthread.h>23intpthread_mutex_lock(pthread_mutex_t *mutex);4intpthread_mutex_trylock(pthread_mutex_t *mutex);5intpthread_mutex_unlock(pthread_mutex_t *mutex);互斥锁初始化的问题:可以通过两种方式初始化一个互斥锁变量:1,如 阅读全文
posted @ 2012-04-24 10:10 笑笑小白 阅读(2431) 评论(0) 推荐(0)
摘要: #ifndef PROCESS_THREAD_H#define PROCESS_THREAD_H#include "ace/Thread.h"#include "ace/Thread_Mutex.h"#include "ace/Synch.h"#include "IProcess.h"static ACE_THR_FUNC_RETURN ProcessThreadFunc(void* pVoid);class ProcessThread{public: ProcessThread(); ~ProcessThread 阅读全文
posted @ 2012-04-24 10:04 笑笑小白 阅读(1754) 评论(0) 推荐(1)
摘要: 等待线程 1。使用pthread_cond_wait前要先加锁 2。pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活 3。pthread_cond_wait被激活后会再自动加锁 激活线程: 1。加锁(和等待线程用同一个锁) 2。pthread_cond_signal发送信号 3。解锁 激活线程的上面三个操作在运行时间上都在等待线程的pthread_cond_wait函数内部。 程序示例: #include <stdio.h> #include <pthread.h> #include <unistd.h> pthread_mute 阅读全文
posted @ 2012-04-24 09:57 笑笑小白 阅读(392) 评论(0) 推荐(0)
摘要: [cpp]view plaincopyprint?<spanstyle="font-family:'LucidaGrande',Verdana,Lucida,Helvetica,Arial,Simsun,sans-serif;"><spanstyle="white-space:normal;"><spanstyle="font-family:monospace;"><spanstyle="white-space:pre;"></span>& 阅读全文
posted @ 2012-04-20 09:38 笑笑小白 阅读(968) 评论(0) 推荐(0)