1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
6 #include "base/i2-base.hpp"
7 #include "base/logger-ti.hpp"
34 double Timestamp; /**< The timestamp when this log entry was created. */
35 LogSeverity Severity; /**< The severity of this log entry. */
36 String Facility; /**< The facility this log entry belongs to. */
37 String Message; /**< The log entry's message. */
45 class Logger : public ObjectImpl<Logger>
48 DECLARE_OBJECT(Logger);
50 static String SeverityToString(LogSeverity severity);
51 static LogSeverity StringToSeverity(const String& severity);
53 LogSeverity GetMinSeverity() const;
56 * Processes the log entry and writes it to the log that is
57 * represented by this ILogger object.
59 * @param entry The log entry that is to be processed.
61 virtual void ProcessLogEntry(const LogEntry& entry) = 0;
63 virtual void Flush() = 0;
65 static std::set<Logger::Ptr> GetLoggers();
67 static void DisableConsoleLog();
68 static void EnableConsoleLog();
69 static bool IsConsoleLogEnabled();
70 static void DisableTimestamp();
71 static void EnableTimestamp();
72 static bool IsTimestampEnabled();
74 static void SetConsoleLogSeverity(LogSeverity logSeverity);
75 static LogSeverity GetConsoleLogSeverity();
77 void ValidateSeverity(const Lazy<String>& lvalue, const ValidationUtils& utils) final;
80 void Start(bool runtimeCreated) override;
81 void Stop(bool runtimeRemoved) override;
84 static boost::mutex m_Mutex;
85 static std::set<Logger::Ptr> m_Loggers;
86 static bool m_ConsoleLogEnabled;
87 static bool m_TimestampEnabled;
88 static LogSeverity m_ConsoleLogSeverity;
95 Log(const Log& other) = delete;
96 Log& operator=(const Log& rhs) = delete;
98 Log(LogSeverity severity, String facility, const String& message);
99 Log(LogSeverity severity, String facility);
104 Log& operator<<(const T& val)
110 Log& operator<<(const char *val);
113 LogSeverity m_Severity;
115 std::ostringstream m_Buffer;
118 extern template Log& Log::operator<<(const Value&);
119 extern template Log& Log::operator<<(const String&);
120 extern template Log& Log::operator<<(const std::string&);
121 extern template Log& Log::operator<<(const bool&);
122 extern template Log& Log::operator<<(const unsigned int&);
123 extern template Log& Log::operator<<(const int&);
124 extern template Log& Log::operator<<(const unsigned long&);
125 extern template Log& Log::operator<<(const long&);
126 extern template Log& Log::operator<<(const double&);
130 #endif /* LOGGER_H */