boost log库使用一
我的英文博客参考:http://csfreebird.blogspot.com/2013/12/use-boost-log-step1.html
我过去习惯使用cppcms提供的日志库,简单好用。从1.54版本,Boost发布了日志库。当读了一些文档后,因为下面的一些原因,我决定转而使用boost::log。
1. TCP服务大概连接了2000个设备,TCP server会保存所有详细信息。举个例子,设备登录到TCP server,设备退出,设备发出消息,server发出消息。并且设备的数量在将来还会增长。这些导致会创建一些很大的日志文件。
2. 需要分析日志文件从而诊断TCP server的故障。也需要观察我们的客户是如何使用他们的设备。当有故障发生时,管理员要收到邮件通知。产品相关人员能够在网站上看到用户行为分析报告以帮助他们改进产品。
很显然,boost的新的log库为上述目的而设计的。正是我期待的。
这里有一个例子,绝大多数代码来自于boost log 文档:http://www.boost.org/doc/libs/1_55_0/libs/log/doc/html/log/tutorial.html#log.tutorial.trivial
我使用Ubuntu 13.10, 安装了clang 3.4,boost1.55是我用clang和 c++ 11选项编译的。参考我的编译命令如下:
./bootstrap.sh --with-libraries=system,filesystem,log,thread --with-toolset=clang./b2 toolset=clang cxxflags="-std=c++11"
好,现在创建一个main.cc文件,然后写下代码如下:
#include <iostream>#include <boost/log/trivial.hpp>using namespace std;int main () { cout << "hello, world" << endl; BOOST_LOG_TRIVIAL(trace) << "A trace severity message"; BOOST_LOG_TRIVIAL(debug) << "A debug severity message"; BOOST_LOG_TRIVIAL(info) << "An informational severity message"; BOOST_LOG_TRIVIAL(warning) << "A warning severity message"; BOOST_LOG_TRIVIAL(error) << "An error severity message"; BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";}
执行编译和链接命令:
c++ -g -std=c++11 -Wall -DBOOST_LOG_DYN_LINK -o ./main.o -c ./main.ccc++ -g -std=c++11 ./main.o -o main -rdynamic -lpthread -lboost_log -lboost_system -lboost_thread -lboost_filesystem
现在运行程序./main,输出结果如下:
$ ./mainhello, world[2013-12-03 14:35:14.309093] [0x000007f362c17d74] [trace] A trace severity message[2013-12-03 14:35:14.309208] [0x000007f362c17d74] [debug] A debug severity message[2013-12-03 14:35:14.309224] [0x000007f362c17d74] [info] An informational severity message[2013-12-03 14:35:14.309237] [0x000007f362c17d74] [warning] A warning severity message[2013-12-03 14:35:14.309250] [0x000007f362c17d74] [error] An error severity message[2013-12-03 14:35:14.309262] [0x000007f362c17d74] [fatal] A fatal severity message
默认情况系,BOOST_LOG_TRIVIAL输出所有信息到控制台。有些人遇到了这个问题:
undefined reference to `boost::log::v2s_mt_posix::trivial::logger::get()'
编译时添加一个宏即可解决。
-DBOOST_LOG_DYN_LINK
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
上一篇: boost-log-库 使用经历
下一篇: boost库
推荐阅读
-
Python标准库urllib2的一些使用细节总结
-
Android Studio 通过一个登录功能介绍SQLite数据库的使用
-
Java学习笔记 DbUtils数据库查询和log4j日志输出 使用
-
ASP 包含文件中的路径问题和使用单一数据库连接文件的解决方案
-
Oracle数据库的登陆、sqlplus的一些使用技巧以及Oracle中常用的知识讲解
-
一个查看MSSQLServer数据库空间使用情况的存储过程 SpaceUsed
-
使用Java实现数据库编程—03 第三章 高级查询(一)
-
分享一个使用mysql dump对MySQL数据库进行备份及恢复教程
-
一款精美的Toast第三方库的简单使用
-
如何恢复数据库备份到一个已存在的正在使用的数据库上