osrm-backend/include/util/json_logger.hpp
Daniel J. Hofmann 4b8c0ac143 Revert "Folds json_* utilities into json subfolder and adapts includes"
This reverts commit cd039c69c0a92a35889e3c875b8eb53cf07377bb.
2016-02-12 15:46:24 -08:00

63 lines
1.0 KiB
C++

#ifndef JSON_LOGGER_HPP
#define JSON_LOGGER_HPP
#include "osrm/json_container.hpp"
#include <boost/thread/tss.hpp>
#include <string>
#include <unordered_map>
namespace osrm
{
namespace util
{
namespace json
{
// Used to append additional debugging information to the JSON response in a
// thread safe manner.
class Logger
{
using MapT = std::unordered_map<std::string, Value>;
public:
static Logger *get()
{
static Logger logger;
bool return_logger = true;
#ifdef NDEBUG
return_logger = false;
#endif
#ifdef ENABLE_JSON_LOGGING
return_logger = true;
#endif
if (return_logger)
{
return &logger;
}
return nullptr;
}
void initialize(const std::string &name)
{
if (!map.get())
{
map.reset(new MapT());
}
(*map)[name] = Object();
}
void render(const std::string &name, Object &obj) const { obj.values["debug"] = map->at(name); }
boost::thread_specific_ptr<MapT> map;
};
}
}
}
#endif /* JSON_LOGGER_HPP */