POCO日志库使用示例
2014-05-12 10:52
232 查看
版权所有,转载时请注明作者和出处 http://blog.csdn.net/jmppok/article/details/25598483
Poco是一个开源的C++库,各方面功能比较全面,包括日志\多线程\文件系统\定时器\网络\配之文件等,同时使用也十分简单.
本文对其中的日志模块进行了简单的试用.
在代码中使用十分简单。
Poco本身对log配置文件似乎没有详细说明,不过可以通过阅读源代码总结出来。
下面是我整理的一个配置文件,其内容如下:
可以看到配置文件分为5个部分:
1) 前两行 定义了一个formatter,就是定义了日志的输出格式:
[%p %Y-%m-%d %H:%M:%S %i %P %I]\n%U:%u\n%t
2)接下来两行定义了一个输出通道,输出的Console控制台,输出格式就是上面定一个的f1
3) 接下来4行定义了另一个输出通道,输出到文件,文件名是sample.log, 输出格式也是f1,。
logging.channels.c2.rotation = daily
rotation=daily意思是每天写一个文件。当然还可以设定文件大小,保存天数等。
具体可看最后的参考文章。
4) 接下来两行,把2) 3)定义的两个输出通道组合起来,成为一个splitter的通道。
5)最后两行,将splitter通道设定为日志root的通道,这样输出的日志会通过splitter分别送到console 和 file。
最后定义日志输出级别为debug。
更多可以参考:
POCO C++库学习和分析 -- 日志 (一)
POCO C++库学习和分析 -- 日志 (二)
Poco是一个开源的C++库,各方面功能比较全面,包括日志\多线程\文件系统\定时器\网络\配之文件等,同时使用也十分简单.
本文对其中的日志模块进行了简单的试用.
1.使用示例
Poco::AutoPtr<Poco::Util::PropertyFileConfiguration> pConf = new Poco::Util::PropertyFileConfiguration("log_conf.properties"); Poco::Util::LoggingConfigurator log_configurator; log_configurator.configure(pConf); _log = &Poco::Logger::root(); _log->debug("debug"); _log->information("information"); _log->warning("warning"); _log->error("error"); _log->fatal("fatal");
在代码中使用十分简单。
2.Log的配置文件
以上代码通过加载配置文件log_conf.propeties对其进行配置。Poco本身对log配置文件似乎没有详细说明,不过可以通过阅读源代码总结出来。
下面是我整理的一个配置文件,其内容如下:
logging.formatters.f1.class = PatternFormatter logging.formatters.f1.pattern = [%p %Y-%m-%d %H:%M:%S %i %P %I]\n%U:%u\n%t logging.channels.c1.class = ConsoleChannel logging.channels.c1.formatter = f1 logging.channels.c2.class = FileChannel logging.channels.c2.formatter = f1 logging.channels.c2.path = ./sample.log logging.channels.c2.rotation = daily logging.channels.splitter.class = SplitterChannel logging.channels.splitter.channels = c1,c2 logging.loggers.root.channel = splitter logging.loggers.root.level = debug
可以看到配置文件分为5个部分:
1) 前两行 定义了一个formatter,就是定义了日志的输出格式:
[%p %Y-%m-%d %H:%M:%S %i %P %I]\n%U:%u\n%t
2)接下来两行定义了一个输出通道,输出的Console控制台,输出格式就是上面定一个的f1
3) 接下来4行定义了另一个输出通道,输出到文件,文件名是sample.log, 输出格式也是f1,。
logging.channels.c2.rotation = daily
rotation=daily意思是每天写一个文件。当然还可以设定文件大小,保存天数等。
具体可看最后的参考文章。
4) 接下来两行,把2) 3)定义的两个输出通道组合起来,成为一个splitter的通道。
5)最后两行,将splitter通道设定为日志root的通道,这样输出的日志会通过splitter分别送到console 和 file。
最后定义日志输出级别为debug。
更多可以参考:
POCO C++库学习和分析 -- 日志 (一)
POCO C++库学习和分析 -- 日志 (二)
相关文章推荐
- POCO日志库使用示例
- C#使用互斥量(Mutex)实现多进程并发操作时多进程间线程同步操作(进程同步)的简单示例代码及使用方法
- log4j使用示例
- MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK
- XPath语法在C#中使用XPath示例第二讲
- Jquery 中each循环嵌套的使用示例教程
- 参数化串解析器使用示例
- 使用 NHibernate 的示例查询
- AppWidget使用示例
- Marthon docker 配置fluent示例 以及tag使用
- zlib库剖析(3):使用示例zpipe.c
- 老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例 2
- flume 1.4的介绍及使用示例
- 在vue项目中使用element-ui的Upload上传组件的示例
- 在DataList中使用PagedDataSource类分页示例(界面)
- 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
- 【Python笔记】no.1列表的使用之超市购物示例
- 非变动性算法源代码分析与使用示例( for_each、min_element 、find_if、search 等)
- 使用 Apache Commons CLI 开发命令行工具示例
- React Native使用Modal自定义分享界面的示例代码