TeamTalk slog详解

1.简介

slog模块依赖于log4cxx,实际是对log4cxx的进一步封装。

2.主要类关系说明:

  • CSLog
    teamtalk日志类,利用内部成员(CSLogObject* m_log)调用CSLogObject接口(组合)

  • CSLogObject
    日志对象虚基类,内部接口全为虚函数(实现为空),主要由子类去实现

  • CLog4CXX
    继承于CSLogObject,利用内部成员(LoggerPtr m_logger)的log4cxx接口重写父类的接口,在util定义了CSLog g_imlog全局变量,实现全局唯一(一般日志类都是单例)

3.log4cxx说明

  • 博主环境为Ubuntu 16.04,执行3rdParty下make_log4cxx.sh课自动编译安装log4cxx
  • 3rdParty/package_log4cxx存放了博主所使用的源码版本
  • 3rdParty/log4cxx保存了log4cxx编译生成的头文件和库文件,方便外部模块依赖使用

4.测试demo说明

- 链接见源码:tests/test_slog.cpp
- 测试/test_slog.cpp时必须包含log4cxx.properties,否则使用log4cxx时会找不到该配置文件而报错,  
  这里默认为当年路径(执行程序所在目录),路径可以自行更改。

CLog4CXX::CLog4CXX(const char* module_name, int delay) : CSLogObject(module_name, delay)
{
    PropertyConfigurator::configureAndWatch("log4cxx.properties", delay);
    m_logger = Logger::getLogger(module_name);
}

Log4cxx配置器有一个configureAndWatch()方法,该方法启动一个Thread来观察用于配置的文件(XML文件或properties文件),
并在文件更改时触发重新配置,多久检查一次取决于第二个参数delay(milliseconds)。

5.slog测试用例编译运行

在主目录下直接执行
cmake .
make

主目录CMakeLists.txt会调用子模块slog和tests/build下的CMakeLists.txt文件
在slog目录下生成libslog.so,在tests/build下生成各个测试用例

可以直接在tests/build下执行cmake,但注意用到libslog.so时需要保证slog目录下已生成该文件

6.源码

链接:TeamTalk_BlueBling/slog
本项目主要为了学习teamtalk,尽量将每个细化模块独立出来并编写测试用例,方便移植。
测试demo:tests/test_slog.cpp

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值