RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
00001 #pragma once 00002 00003 #include "soa/logger/kvp_logger_interface.h" 00004 #include <boost/property_tree/ptree.hpp> 00005 #include <boost/shared_ptr.hpp> 00006 #include <boost/program_options/variables_map.hpp> 00007 #include <boost/program_options/options_description.hpp> 00008 #include "soa/types/date.h" 00009 #include <iostream> 00010 00011 namespace Datacratic{ 00012 00017 class EasyKvpLogger{ 00018 typedef std::map<std::string, std::string> strmap; 00019 typedef std::map<std::string, std::string>::const_iterator strmap_citerator; 00020 00021 public: 00022 EasyKvpLogger(const boost::property_tree::ptree& pt, 00023 const std::string& coll, 00024 const std::string& envVar, 00025 const bool& logStarEnd = false, 00026 const strmap& defaults = strmap()); 00027 EasyKvpLogger(const boost::property_tree::ptree& pt, 00028 const std::string& coll, const std::string& envVar, 00029 const std::string& runId, 00030 const bool& logStartEnd = false, 00031 const strmap& defaults = strmap()); 00032 00033 EasyKvpLogger(const boost::program_options::variables_map& vm, 00034 const std::string& coll, 00035 const std::string& envVar, 00036 const bool& logStarEnd = false, 00037 const strmap& defaults = strmap()); 00038 00039 ~EasyKvpLogger(); 00040 00041 void log(strmap& kvpMap); 00042 00047 void clog(const strmap& kvpMap); 00048 void log(const std::string& key, const std::string& value); 00049 std::string getRunId(); 00050 00054 void setDefaults(const strmap& defaults); 00055 00056 static boost::program_options::options_description get_options(); 00057 00058 private: 00059 const std::string coll; 00060 std::string runId; 00061 std::shared_ptr<IKvpLogger> logger; 00062 strmap defaults; 00063 const bool logStartEnd; 00064 Date start; 00065 void defineLogger(const boost::property_tree::ptree& pt, 00066 const strmap& defaults, const bool& logStartEnd); 00067 void defineLogger(const boost::program_options::variables_map& vm, 00068 const strmap& defaults, const bool& logStartEnd); 00069 void logStart(); 00070 void setEnvVar(const std::string& envVar, const std::string& runId); 00071 void setDateAsRunIdIfNotInEnvVar(const std::string & envVar); 00072 00073 00077 void addDefaultsToMap(strmap& kvpMap); 00078 }; 00079 00080 00081 }//namespace Datacratic