]> granicus.if.org Git - icinga2/blob - lib/livestatus/logtable.hpp
Merge pull request #7185 from Icinga/bugfix/gelfwriter-wrong-log-facility
[icinga2] / lib / livestatus / logtable.hpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #ifndef LOGTABLE_H
4 #define LOGTABLE_H
5
6 #include "livestatus/historytable.hpp"
7 #include <boost/thread/mutex.hpp>
8
9 using namespace icinga;
10
11 namespace icinga
12 {
13
14 /**
15  * @ingroup livestatus
16  */
17 class LogTable final : public HistoryTable
18 {
19 public:
20         DECLARE_PTR_TYPEDEFS(LogTable);
21
22         LogTable(const String& compat_log_path, time_t from, time_t until);
23
24         static void AddColumns(Table *table, const String& prefix = String(),
25                 const Column::ObjectAccessor& objectAccessor = Column::ObjectAccessor());
26
27         String GetName() const override;
28         String GetPrefix() const override;
29
30         void UpdateLogEntries(const Dictionary::Ptr& log_entry_attrs, int line_count, int lineno, const AddRowFunction& addRowFn) override;
31
32 protected:
33         void FetchRows(const AddRowFunction& addRowFn) override;
34
35         static Object::Ptr HostAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor);
36         static Object::Ptr ServiceAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor);
37         static Object::Ptr ContactAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor);
38         static Object::Ptr CommandAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor);
39
40         static Value TimeAccessor(const Value& row);
41         static Value LinenoAccessor(const Value& row);
42         static Value ClassAccessor(const Value& row);
43         static Value MessageAccessor(const Value& row);
44         static Value TypeAccessor(const Value& row);
45         static Value OptionsAccessor(const Value& row);
46         static Value CommentAccessor(const Value& row);
47         static Value PluginOutputAccessor(const Value& row);
48         static Value StateAccessor(const Value& row);
49         static Value StateTypeAccessor(const Value& row);
50         static Value AttemptAccessor(const Value& row);
51         static Value ServiceDescriptionAccessor(const Value& row);
52         static Value HostNameAccessor(const Value& row);
53         static Value ContactNameAccessor(const Value& row);
54         static Value CommandNameAccessor(const Value& row);
55
56 private:
57         std::map<time_t, String> m_LogFileIndex;
58         std::map<time_t, Dictionary::Ptr> m_RowsCache;
59         time_t m_TimeFrom;
60         time_t m_TimeUntil;
61         String m_CompatLogPath;
62 };
63
64 }
65
66 #endif /* LOGTABLE_H */