Hazelcast C++ Client
Hazelcast C++ Client Library
logger.h
1 #pragma once
2 
3 #include <string>
4 #include <functional>
5 #include <limits>
6 
7 #include "hazelcast/util/export.h"
8 
9 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
10 #pragma warning(push)
11 #pragma warning(disable: 4251) //for dll export
12 #endif
13 
14 #ifndef HZ_LOGGING_DISABLED
15 #define HZ_LOG(lg, lvl, msg) \
16  if ((lg).enabled( ::hazelcast::logger::level::lvl )) { \
17  (lg).log(::hazelcast::logger::level::lvl, ( msg )); \
18  }
19 #else
20  #define HZ_LOG(lg, lvl, msg)
21 #endif
22 
23 
24 namespace hazelcast {
25 
26 class HAZELCAST_API logger {
27 public:
31  enum class level;
32 
33  using handler_type = std::function<void(const std::string &,
34  const std::string &,
35  level,
36  const std::string &)>;
37 
38  logger(std::string instance_name, std::string cluster_name,
39  level lvl, handler_type handler);
40 
41  bool enabled(level lvl) noexcept;
42 
43  void log(level lvl, const std::string &msg) noexcept;
44 
45  static void default_handler(const std::string &instance_name,
46  const std::string &cluster_name,
47  level lvl,
48  const std::string &msg) noexcept;
49 
50 private:
51  const std::string instance_name_;
52  const std::string cluster_name_;
53  const level level_;
54  const handler_type handler_;
55 };
56 
57 enum class logger::level : int {
58  all = (std::numeric_limits<int>::min)(),
59  finest = 300,
60  finer = 400,
61  fine = 500,
62  info = 800,
63  warning = 900,
64  severe = 1000,
65  off = (std::numeric_limits<int>::max)()
66 };
67 
68 HAZELCAST_API std::ostream& operator<<(std::ostream&, logger::level level);
69 
70 } // namespace hazelcast
71 
72 #if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
73 #pragma warning(pop)
74 #endif