MantisBase v0.3.4
Loading...
Searching...
No Matches
log_database.h
Go to the documentation of this file.
1
9#ifndef MANTIS_LOG_DATABASE_H
10#define MANTIS_LOG_DATABASE_H
11
12#include <string>
13#include <memory>
14#include <thread>
15#include <atomic>
16#include <condition_variable>
17#include <mutex>
18#include <nlohmann/json.hpp>
19
20namespace soci {
21 class session;
22}
23
24namespace mb {
25 using json = nlohmann::json;
26
34 public:
39
44
49 bool init(const std::string& data_dir = "");
50
60 bool insertLog(const std::string& level, const std::string& origin, const std::string& message,
61 const std::string& details, const json& data = json::object());
62
75 json getLogs(int page = 1, int page_size = 50,
76 const std::string& level_filter = "",
77 const std::string& search_filter = "",
78 const std::string& start_date = "",
79 const std::string& end_date = "",
80 const std::string& sort_by = "timestamp",
81 const std::string& sort_order = "desc");
82 private:
86 void shutdown();
87
91 void createTable() const;
92
96 void cleanupThread();
97
102 void deleteOldLogs(int days = 5);
103
104 static std::string buildMinLogWhereCondition(const std::string& level);
105
106 std::string m_dataDir;
107 std::unique_ptr<soci::session> m_session;
108 std::thread m_cleanupThread;
109 std::atomic<bool> m_running;
110 std::condition_variable m_cv;
111 std::mutex m_dbMutexLock;
112
113 inline static const std::vector<std::string> m_logLevels{ "critical", "warn", "info", "debug", "trace"};
114 };
115}
116
117#endif // MANTIS_LOG_DATABASE_H
118
Manages SQLite database for application logs.
Definition log_database.h:33
bool init(const std::string &data_dir="")
Initialize database: create table and start cleanup thread.
Definition log_database.cpp:24
bool insertLog(const std::string &level, const std::string &origin, const std::string &message, const std::string &details, const json &data=json::object())
Insert a log entry into the database.
Definition log_database.cpp:82
~LogDatabase()
Destructor - stops cleanup thread and closes database.
Definition log_database.cpp:17
LogDatabase()
Construct LogDatabase instance.
Definition log_database.cpp:14
json getLogs(int page=1, int page_size=50, const std::string &level_filter="", const std::string &search_filter="", const std::string &start_date="", const std::string &end_date="", const std::string &sort_by="timestamp", const std::string &sort_order="desc")
Get logs with pagination, filtering, and sorting.
Definition log_database.cpp:130
router.h
Definition auth.h:15
nlohmann::json json
Shorten JSON namespace.
Definition context_store.h:18
Definition log_database.h:20