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