如何使用从与Gloa多个文件升压日志 [英] how to use boost log from multiple files with Gloa
问题描述
我想我的整个应用程序中创建一个全局记录,所以我可以使用
SRC :: severity_logger_mt< >&安培; LG = my_logger :: get()方法;
获得不同类别的全球记录器(在不同的文件驻留)日志记录。
我试着按照boost.org列出的示例(如下所列)。但似乎并不工作。没有人知道任何例子,我可以按照我还是需要做,如果做什么工作。谢谢你。
<一个href=\"http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/sources.html\">http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/sources.html
BOOST_LOG_GLOBAL_LOGGER(my_logger,SRC :: severity_logger_mt)
// my_logger.h
// ===========#包括my_logger.hBOOST_LOG_GLOBAL_LOGGER_INIT(my_logger,SRC :: severity_logger_mt)
{
SRC :: severity_logger_mt&LT; &GT; LG;
lg.add_attribute(秒表,助推:: make_shared&LT; ATTRS ::定时器&GT;());
LG的回报;
}// my_logger.cpp
// ===========#包括my_logger.hBOOST_LOG_GLOBAL_LOGGER_INIT(my_logger,SRC :: severity_logger_mt)
{
SRC :: severity_logger_mt&LT; &GT; LG;
lg.add_attribute(秒表,助推:: make_shared&LT; ATTRS ::定时器&GT;());
LG的回报;
}
我刚刚成功地得到这个工作我自己
Logging.h
的#pragma一次#包括LT&;升压/日志/ EX pressions.hpp&GT;
#包括LT&;升压/日志/来源/ global_logger_storage.hpp&GT;
#包括LT&;升压/日志/支持/ date_time.hpp&GT;
#包括LT&;升压/日志/ trivial.hpp&GT;
#包括LT&;升压/日志/实用/ setup.hpp&GT;#定义信息BOOST_LOG_SEV(my_logger :: get()方法,提振::登录::琐碎::资讯)
#定义WARN BOOST_LOG_SEV(my_logger :: get()方法,提振::登录::琐碎::警告)
#定义错误BOOST_LOG_SEV(my_logger :: get()方法,提振::登录::琐碎::错误)#定义SYS_LOGFILE/var/log/example.log//窄字符线程安全记录。
TYPEDEF提振::登录::来源:: severity_logger_mt&LT;提高::登录::琐碎:: severity_level&GT; logger_t;//声明了一个自定义初始化的全局logger
BOOST_LOG_GLOBAL_LOGGER(my_logger,logger_t)
Logging.cpp
的#includeLogging.h命名空间的attrs =提振::登录::属性;
命名空间EXPR =提振::登录::前pressions;
空间日志=提振::登录;//定义一个全局记录器初始化程序
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger,logger_t)
{
logger_t LG; 测井:: add_common_attributes(); 记录:: add_file_log(
提高::登录::关键词:FILE_NAME = SYS_LOGFILE,
提高::登录::关键词:格式=(
EXPR ::流&LT;&LT; EXPR :: format_date_time&LT;提高::了posix_time ::分组时间&GT;(时间戳,%Y-%M-%D%H:%M:%S)
&LT;&LT; [&LT;&LT; EXPR :: ATTR&LT;提高::登录::琐碎:: severity_level&GT;(严重性)&LT;&LT; ]:
&LT;&LT; EXPR :: smessage
)
); 记录:: add_console_log(
性病::法院,
提高::登录::关键词:格式=(
EXPR ::流&LT;&LT; EXPR :: format_date_time&LT;提高::了posix_time ::分组时间&GT;(时间戳,%Y-%M-%D%H:%M:%S)
&LT;&LT; [&LT;&LT; EXPR :: ATTR&LT;提高::登录::琐碎:: severity_level&GT;(严重性)&LT;&LT; ]:
&LT;&LT; EXPR :: smessage
)
); 记录::核心::得到() - GT; set_filter
(
记录::琐碎::严重性&GT; =记录::琐碎::信息
); LG的回报;
}
的main.c
的#includeLogging.hINT主(INT ARGC,字符** argv的)
{
INFO&LT;&LT; 程序已启动; 返回0;
}
我的构建设置
AM_LDFLAGS + = -lboost_system -lboost_thread -lpthread
AM_LDFLAGS + = -DBOOST_LOG_DYN_LINK -lboost_log_setup -lboost_log
AM_CXXFLAGS + = -std = C ++ 11 -DBOOST_LOG_DYN_LINK
I am trying to create a Global Logger within my entire application so I can use
src::severity_logger_mt< >& lg = my_logger::get();
to get the global logger for different classes (resided in different files) logging.
I try to follow the example listed in boost.org (as listed below). But does not seems to work. Did anyone know any example I can follow or what I need to do make if works. Thanks.
http://www.boost.org/doc/libs/1_54_0/libs/log/doc/html/log/detailed/sources.html
BOOST_LOG_GLOBAL_LOGGER(my_logger, src::severity_logger_mt)
// my_logger.h
// ===========
#include "my_logger.h"
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, src::severity_logger_mt)
{
src::severity_logger_mt< > lg;
lg.add_attribute("StopWatch", boost::make_shared< attrs::timer >());
return lg;
}
// my_logger.cpp
// ===========
#include "my_logger.h"
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, src::severity_logger_mt)
{
src::severity_logger_mt< > lg;
lg.add_attribute("StopWatch", boost::make_shared< attrs::timer >());
return lg;
}
I've just managed to get this working myself
Logging.h
#pragma once
#include <boost/log/expressions.hpp>
#include <boost/log/sources/global_logger_storage.hpp>
#include <boost/log/support/date_time.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup.hpp>
#define INFO BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::info)
#define WARN BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::warning)
#define ERROR BOOST_LOG_SEV(my_logger::get(), boost::log::trivial::error)
#define SYS_LOGFILE "/var/log/example.log"
//Narrow-char thread-safe logger.
typedef boost::log::sources::severity_logger_mt<boost::log::trivial::severity_level> logger_t;
//declares a global logger with a custom initialization
BOOST_LOG_GLOBAL_LOGGER(my_logger, logger_t)
Logging.cpp
#include "Logging.h"
namespace attrs = boost::log::attributes;
namespace expr = boost::log::expressions;
namespace logging = boost::log;
//Defines a global logger initialization routine
BOOST_LOG_GLOBAL_LOGGER_INIT(my_logger, logger_t)
{
logger_t lg;
logging::add_common_attributes();
logging::add_file_log(
boost::log::keywords::file_name = SYS_LOGFILE,
boost::log::keywords::format = (
expr::stream << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
<< " [" << expr::attr< boost::log::trivial::severity_level >("Severity") << "]: "
<< expr::smessage
)
);
logging::add_console_log(
std::cout,
boost::log::keywords::format = (
expr::stream << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
<< " [" << expr::attr< boost::log::trivial::severity_level >("Severity") << "]: "
<< expr::smessage
)
);
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
return lg;
}
main.c
#include "Logging.h"
int main(int argc, char **argv)
{
INFO << "Program started";
return 0;
}
My build settings
AM_LDFLAGS += -lboost_system -lboost_thread -lpthread
AM_LDFLAGS += -DBOOST_LOG_DYN_LINK -lboost_log_setup -lboost_log
AM_CXXFLAGS += -std=c++11 -DBOOST_LOG_DYN_LINK
这篇关于如何使用从与Gloa多个文件升压日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!