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