我不是一个完整的C ++新手,但是我在使用这种语言方面还远远不够。...!
简而言之:
在主课程以外的其他课程中使用相同的Boost日志的最佳实践是什么?
我的目标是使用一个可以存储到文件以及在控制台上显示的增强日志。
设置/主位工作正常:
主要入口点:
void init();
int main()
{
/*start logging */
init();
logging::add_common_attributes();
using namespace logging::trivial;
src::severity_logger< severity_level > lg;
BOOST_LOG_SEV(lg,info) << "KeyGeo started...";
//rest of my program objects start here,omitted for brevity......
return 0;
}
具有初始化功能,可根据Boost docs设置记录器
/* configuration for the boost log */
void init()
{
logging::add_file_log
(
keywords::file_name = "KGLog_%N.log",keywords::rotation_size = 10 * 1024 * 1024,keywords::time_based_rotation = sinks::file::rotation_at_time_point(0,0),keywords::format = "[%TimeStamp%]: %Message%",keywords::open_mode = std::ios_base::app,keywords::auto_flush = true
);
logging::core::get()->set_filter
(
logging::trivial::severity >= logging::trivial::info
);
}
但是在其他课程中,我将如何/如何使用同一日志。我可以将“ lg”作为构造函数或类似参数的参数传递,但这似乎是一种怪诞的方式。我尝试了诸如src::logger lg
之类的各种示例,但这些示例均无效。
我在这里放什么?
#include "KGSQLManager.h"
#include "KGResult.h"
#include "stdafx.h"
using namespace logging::trivial;
namespace KeyGeo
{
class KGDataFactory
{
/* SOME BOOST LOG OBJECT IM GUESSING ???! */
private:
SQLWCHAR *connStr;
std::vector< KGResult > results;
public:
KGDataFactory();
KGSQLManager SQLManager;
void parseSourceGeo();
void initLogs();
};
}