首页 > 代码库 > Boost Log 基本用法
Boost Log 基本用法
Boost Log 基本用法
flyfish 2014-11-5
根据boost提供的代码示例,学习Boost Log 的基本用法
前提
boost版本boost_1_56_0
示例代码文件夹 boost_1_56_0\libs\log\example\basic_usage
使用的单词很形象,整个过程就像流水一样
假设要输出的日志比作水
水 (Hello, World!)
水槽 (sink)
流向哪里 (console,file)
从哪里取 (source)
水的等级 (severity level)
过滤输出 (filter)
格式输出 (format)
各部分连接者(core)
示例
flyfish 2014-11-5
根据boost提供的代码示例,学习Boost Log 的基本用法
前提
boost版本boost_1_56_0
示例代码文件夹 boost_1_56_0\libs\log\example\basic_usage
使用的单词很形象,整个过程就像流水一样
假设要输出的日志比作水
水 (Hello, World!)
水槽 (sink)
流向哪里 (console,file)
从哪里取 (source)
水的等级 (severity level)
过滤输出 (filter)
格式输出 (format)
各部分连接者(core)
示例
#include <iostream> #include <boost/log/common.hpp> #include <boost/log/expressions.hpp> #include <boost/log/utility/setup/file.hpp> #include <boost/log/utility/setup/console.hpp> #include <boost/log/utility/setup/common_attributes.hpp> #include <boost/log/attributes/timer.hpp> #include <boost/log/attributes/named_scope.hpp> #include <boost/log/sources/logger.hpp> #include <boost/log/support/date_time.hpp> namespace logging = boost::log; namespace sinks = boost::log::sinks; namespace attrs = boost::log::attributes; namespace src = http://www.mamicode.com/boost::log::sources;>
从上到下依次分析
一 日志严重性等级
enum severity_level
{
normal,
notification,
warning,
error,
critical
};
二 日志等级输出
template< typename CharT, typename TraitsT >
inline std::basic_ostream< CharT, TraitsT >& operator<< (
std::basic_ostream< CharT, TraitsT >& strm, severity_level lvl)
{
...
}
输出已经定义的等级描述,日志等级的数值与字符串一一对应,如果在enum severity_level如果没有定义则输出数值。
std::basic_ostream对所有的内建类型,进行了重载,输入各种内置类型
重载operator <<,使得自定的用户定义类型severity_level 集成到IOStream library中
IOStream library的类都带有两个参数,其中一个是字符的类型,一个是与字符类型相关的信息
就像std::cout一样输出各种类型,编译器自己会进行正确的推导输出的什么类型。
static const char* const 表示数组里面的指针不可改变 而且指针所指向的字符串也不可改变
三 日志输出位置
logging::add_console_log
日志输出到控制台
logging::add_file_log
日志输出到文件四 定义源,像std::cout一样输出
src::logger lg;
BOOST_LOG(lg) << "Hello, World!";五 结果
文件的输出
2014-11-05, 19:46:19.513082 [00:00:00]
[int __cdecl wmain(int,char *[]) (文件路径:代码行)] <warning> A warning severity message, will pass to the file
2014-11-05, 19:46:19.518082 [00:00:00]
[int __cdecl wmain(int,char *[]) (文件路径:代码行)] <error> An error severity message, will pass to the file
控制台的输出
2014-Nov-05 19:51:30.261856: Hello, World!
2014-Nov-05 19:51:30.268856: A normal severity message, will not pass to the file
2014-Nov-05 19:51:30.275856: A warning severity message, will pass to the file
2014-Nov-05 19:51:30.284857: An error severity message, will pass to the fileBoost Log 基本用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。