boost log 在项目中的应用.
来源:互联网 发布:电子相框 知乎 编辑:程序博客网 时间:2024/05/01 08:54
这个是我自己写的一个类.
#pragma once#include <string>#include <boost/log/trivial.hpp>using std::string;#define LOG_DEBUG\ BOOST_LOG_SEV((MyLog::s_slg),(boost::log::trivial::debug))#define LOG_INFO\ BOOST_LOG_SEV((MyLog::s_slg),(boost::log::trivial::info))#define LOG_ERROR\ BOOST_LOG_SEV((MyLog::s_slg),(boost::log::trivial::error))#define LOG_WARNING\ BOOST_LOG_SEV((MyLog::s_slg),(boost::log::trivial::warning))// 在使用之前必须先调用 init// 使用方式 LOG_DEBUG<<"test string";// 也可以用boost 中的宏 BOOST_LOG_TRIVIAL(info)<<"test msg";class MyLog{public: MyLog(); ~MyLog(void); // 在使用之前必须先调用此函数 static void Init(const string & dir); static void Log(const string & msg ); static boost::log::sources::severity_logger<boost::log::trivial::severity_level > s_slg;protected:private:};
#include "MyLog.h"#include <iostream>#include <string>#include <boost/filesystem.hpp>#include <boost/log/sources/logger.hpp>#include <boost/log/sources/record_ostream.hpp>#include <boost/log/sources/global_logger_storage.hpp>#include <boost/log/utility/setup/file.hpp>#include <boost/log/utility/setup/common_attributes.hpp>#include <boost/log/sinks/text_ostream_backend.hpp>#include <boost/log/attributes/named_scope.hpp>#include <boost/log/expressions.hpp>#include <boost/log/support/date_time.hpp>#include <boost/log/detail/format.hpp>#include <boost/log/detail/thread_id.hpp>namespace logging = boost::log;namespace src = boost::log::sources;namespace keywords = boost::log::keywords;namespace sinks = boost::log::sinks;namespace expr = boost::log::expressions;BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::logger_mt)boost::log::sources::severity_logger<boost::log::trivial::severity_level > MyLog::s_slg;MyLog::MyLog(){}MyLog::~MyLog(void){ }void MyLog::Init(const string & dir){ if (boost::filesystem::exists(dir) == false) { boost::filesystem::create_directories(dir); } auto pSink = logging::add_file_log ( keywords::open_mode = std::ios::app, keywords::file_name = dir + "/%Y%m%d.log", keywords::rotation_size = 10 * 1024 * 1024, keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0), //keywords::format = "[%TimeStamp% %ThreadID%]: %Message%" keywords::format = ( expr::stream << "[" <<expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f") << " " << expr::attr< boost::log::aux::thread::id >("ThreadID") << " " << logging::trivial::severity << "] " << expr::smessage ) ); // 如果不写这个 它不会实时的把日志写下去, 而是等待缓冲区满了,或者程序正常退出时写下,这样做的好处是减少IO操作.提高效率, 不过我这里不需要它. 因为我的程序可能会异常退出. pSink->locked_backend()->auto_flush(true);//使日志实时更新 //pSink->imbue(std::locale("zh_CN.UTF-8")); // 本地化 logging::add_common_attributes();}void MyLog::Log(const string & msg ){ src::logger lg; BOOST_LOG(lg) << msg;}
- boost log 在项目中的应用.
- Boost.log的应用
- Boost.log的应用
- Boost.log的应用
- boost log 中的几个问题
- Boost Serialization在网游中的应用实例
- boost在实际项目中的使用
- boost在实际项目中的使用
- boost 在实际项目中的使用
- CMMI5在项目中的应用
- css 在项目中的应用
- ZedGraph在项目中的应用
- WMB在项目中的应用
- 缓存在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Log4j在项目中的应用
- axis到axis2升级中碰到的有关问题
- Android oom(out of memory)的疑难问题
- 如何带文件路径复制文件
- ssh登录很慢,登录上去后速度正常问题的解决方法
- 好的学习网站
- boost log 在项目中的应用.
- 理财
- 初尝Bootstrap
- (7)左旋字符串
- Properties 工具类
- C语言数据类型
- PHP 5.3.1 安装包 VC9 VC6 区别是什么
- 字符串排版化输出(左边十六进制,右边是对应字符)
- 认识路由器