9#ifndef MANTIS_LOG_DATABASE_H
10#define MANTIS_LOG_DATABASE_H
16#include <condition_variable>
18#include <nlohmann/json.hpp>
25 using json = nlohmann::json;
49 bool init(
const std::string& data_dir =
"");
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());
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");
91 void createTable()
const;
102 void deleteOldLogs(
int days = 5);
104 static std::string buildMinLogWhereCondition(
const std::string& level);
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;
113 inline static const std::vector<std::string> m_logLevels{
"critical",
"warn",
"info",
"debug",
"trace"};
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