编译boost:

1、打开Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio Command Promot

2、命令CD到boost目录下,运行 bjam stage --toolset=msvc-10.0 --with-log threading=multi release

stage 指编译到stage目录下,toolset:编译工具,with-log:指定编译boost的log模块

Log 模块:

boost log库 使用

 #include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
#include <boost/thread/thread.hpp>
#include <boost/log/core.hpp>
#include <boost/log/sinks/sync_frontend.hpp>
#include <boost/log/sinks/text_ostream_backend.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/support/date_time.hpp>
#include <boost/log/common.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/attributes.hpp>
#include <boost/log/sinks.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/formatter_parser.hpp>
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/severity_feature.hpp>
#include <boost/log/trivial.hpp> #include <boost/log/attributes/named_scope.hpp>
#include <boost/log/expressions/keyword.hpp> #include <fstream>
#include <iostream> using namespace std; namespace logging = boost::log;
namespace attrs = boost::log::attributes;
namespace src = boost::log::sources;
namespace sinks = boost::log::sinks;
namespace expr = boost::log::expressions;
namespace keywords = boost::log::keywords; using namespace logging::trivial; enum sign_severity_level {
trace,
debug,
info,
warning,
error,
fatal,
report
}; BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::severity_logger_mt<sign_severity_level>) void InitLog()
{
typedef sinks::synchronous_sink<sinks::text_file_backend> TextSink; // 设置旋转日志,每天0时添加一个日志文件,或日志文件大于10MB时添加另一个日志文件,磁盘必须大于3G
/*boost::shared_ptr<sinks::text_file_backend>*/
auto backend = boost::make_shared<sinks::text_file_backend>(
keywords::file_name = "%Y-%m-%d.log", // 日志文件
keywords::rotation_size = * * , // 日志文件上限10MB
keywords::time_based_rotation = sinks::file::rotation_at_time_point(, , ), // 每天一个日志文件
keywords::min_free_space = * * , // 磁盘最小容量
keywords::open_mode = ios::app, // 文件追加
keywords::auto_flush = true // 自动刷新(立刻写入日志文件)
); //// 自动刷新(立刻写入日志文件)
//backend->auto_flush(true); boost::shared_ptr<TextSink> sink(new TextSink(backend)); // 格式化日志格式 [日期]<日志级别>: 日志内容
sink->set_formatter(
//// 两种格式化写法
//// 1:
//expr::stream
//<< "[" << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S") << "]"
//<< "<" << expr::attr<SeverityLevel::sign_severity_level>("Severity") << ">"
//<< "(" << expr::format_named_scope("Scopes", boost::log::keywords::format = "%n (%f : %l)") << "):"
//<< expr::smessage // 2:
expr::format("[%1%]<%2%>(%3%): %4%")
% expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
% expr::attr<sign_severity_level>("Severity") /*logging::trivial::severity*/
// %n:Scope name(void foo());%f:Source file name of the scope;%l:Line number in the source file
% expr::format_named_scope("Scopes", boost::log::keywords::format = "%n (%f : %l)")
//% expr::attr<attrs::current_thread_id::value_type >("ThreadID") // 单线程没有ID
% expr::smessage
); logging::core::get()->add_global_attribute("Scopes", attrs::named_scope()); // 设置过滤器
sink->set_filter(expr::attr< sign_severity_level >("Severity") >= sign_severity_level::error);
//sink->set_filter(expr::attr< severity_level >("Severity") >= logging::trivial::severity_level::error); logging::add_common_attributes(); // 要添加,否则线程ID和日期等一些属性都打印不出来
logging::core::get()->add_sink(sink);
} void foo(void)
{
//BOOST_LOG_FUNCTION(); // 打印更详细的scope BOOST_LOG_NAMED_SCOPE("Scopes"); // 一定要这句,否则打印不出scope
src::severity_logger_mt<sign_severity_level>& lg = my_logger::get();
BOOST_LOG_SEV(lg, sign_severity_level::error) << "A trace severity message";
} int main()
{
InitLog();
foo();
logging::core::get()->remove_all_sinks();
}

Boost log样例

boost 相关的更多相关文章

  1. boost相关

    1 boost 常用函数 <1> tcp跟udp的收发函数名 tcp收发 async_write async_read async_read_until udp收发 async_send_ ...

  2. 编译用到boost相关的东西,问题的解决;以及和googletest库

    编译https://github.com/RAttab/reflect, 发现需要gcc4.7以上的版本才行.于是编译安装最新的gcc-6.2.0, 过程算顺利. http://www.linuxfr ...

  3. Boost程序库完全开发指南——深入C++“准”标准库(第3版)

    内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...

  4. boost function对象

    本文根据boost的教程整理. 主要介绍boost function对象的用法. boost function boost function是什么 boost function是一组类和模板组合,用于 ...

  5. boost 的函数式编程库 Phoenix入门学习

    这篇文章是我学习boost phoenix的总结. 序言 Phoenix是一个C++的函数式编程(function programming)库.Phoenix的函数式编程是构建在函数对象上的.因此,了 ...

  6. Gradient Boost 算法流程分析

    我们在很多Gradient Boost相关的论文及分析文章中都可以看到下面的公式: 但是,对这个公式的理解,我一直也是一知半解,最近,终于下决心对其进行了深入理解. 步骤1:可以看作优化目标的损失函数 ...

  7. 并发编程(二):分析Boost对 互斥量和条件变量的封装及实现生产者消费者问题

    请阅读上篇文章<并发编程实战: POSIX 使用互斥量和条件变量实现生产者/消费者问题>.当然不阅读亦不影响本篇文章的阅读. Boost的互斥量,条件变量做了很好的封装,因此比" ...

  8. Boost 和 Boost.Build 的设置

    问题: 安装编译完 Boost 后,如果不设置 BOOST_ROOT 和 BOOST_BUILD_PATH 则可能导致使用 bjam 时定位到 Boost 默认的路径 /usr/share/boost ...

  9. 比特币源码分析--C++11和boost库的应用

    比特币源码分析--C++11和boost库的应用     我们先停下探索比特币源码的步伐,来分析一下C++11和boost库在比特币源码中的应用.比特币是一个纯C++编写的项目,用到了C++11和bo ...

随机推荐

  1. 新浪博客如何显示高亮代码,DIY

    新浪博客对代码的支持功能不尽完美,或者说一点都不好,可是对于一个追求完美的技术痴而言,代码不能够完美的显示,心里总有那么一些不爽,那么如何在新浪中显示那些带颜色的代码呢?经过探究,可以如下设置:   ...

  2. uC/OS-II之系统函数20160526

    任务管理 1 OSTaskCreate() 建立一个新任务.任务的建立可以在多任务环境启动之前,也可以在正在运行的任务中建立.中断处理程序中不能 建立任务.一个任务可以为无限循环的结构. 函数原型:I ...

  3. Python os模块常用部分功能

    os.sep 可以取代操作系统特定的路径分割符. os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcw ...

  4. CK表达式编辑器

    1.      什么是表达式编辑器? 这个工具允许技术员传入一系列的参数,由用户编辑一个公式返回一种特定的结果.之所以需要使用表达式编辑器,就是因为用户编辑的公式经常变,技术员无法想出一办法来适应用户 ...

  5. EMVTag系列7《静态签名数据》

    Ø 5F24    应用有效期 L: 3 -M(必备) 1)  芯片中的应用失效日期5F24,服务码5F30,必须与芯片中的二磁道等效数据(Tag57)中的失效日期和服务码一致. 2)  qPBOC ...

  6. Oracle结果集 (MSSQL存储过程写报表)

    接触SQL Server比较多,写报表是用存储过程实现. 对Oracle实现像MSSQL那样,还是有很多疑问

  7. Linux环境PostgreSQL源码编译安装

    Linux环境PostgreSQL源码编译安装 Linux版本: Red Hat 6.4 PostgreSQL版本: postgresql-9.3.2.tar.gz 数据存放目录: /var/post ...

  8. ORACLE-用户常用数据字典的查询使用方法

    一.用户 查看当前用户的缺省表空间 SQL> select username,default_tablespace from user_users; USERNAME DEFAULT_TABLE ...

  9. 管理员必备的20个Linux系统监控工具

    需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧.大多数Linux发行版本都装备了大量的监控工具.这些工具提供了能用作取得相关信息和系统活动的量度指标.你能使用这些工具发现造成性 ...

  10. SQL Server数据库学习笔记-三大范式

    第一范式(First Normal Form,简称1NF):数据库表中的字段都是单一属性的,不可再分.这个单一属性由基本类型构成,包括整型.实数.字符型.逻辑型.日期型等.要求一个属性只包含一个值,多 ...