RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
soa/logger/easy_kvp_logger.h
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
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator