Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
logger_adapter.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
63#pragma once
64
66
67#include <chrono>
68#include <cstddef>
69#include <memory>
70#include <string>
71
72// Use common Result pattern from shared header
74
75// Forward declare backend interface
77{
78 class logger_backend;
79}
80
81namespace database
82{
83namespace integrated
84{
85namespace adapters
86{
87
92{
94 system,
95 fallback,
96 null
97};
98
109{
110public:
116 explicit logger_adapter(
117 const db_logger_config& config,
119
126
127 // Non-copyable
130
131 // Move constructor only (const reference member prevents move assignment)
133 logger_adapter& operator=(logger_adapter&&) = delete;
134
144
154
159 bool is_initialized() const;
160
161 // ═══════════════════════════════════════════════════════════════
162 // Database-Specific Logging Methods
163 // ═══════════════════════════════════════════════════════════════
164
175 void log_query(db_log_level level, const std::string& query, std::chrono::microseconds duration);
176
187 void log_slow_query(const std::string& query, std::chrono::microseconds duration,
188 std::chrono::milliseconds threshold);
189
198 void log_connection_event(const std::string& event, const std::string& details);
199
207 void log_transaction(const std::string& operation, bool success, const std::string& details);
208
218 void log_pool_event(const std::string& event, std::size_t active, std::size_t idle);
219
227 void log_error(const std::string& operation, const std::string& error_msg,
228 const std::string& sql_state = "");
229
230 // ═══════════════════════════════════════════════════════════════
231 // Generic Logging
232 // ═══════════════════════════════════════════════════════════════
233
240 void log(db_log_level level, const std::string& message);
241
248 void flush();
249
250private:
254 static std::unique_ptr<backends::logger_backend> create_backend(
255 const db_logger_config& config,
257
259 std::unique_ptr<backends::logger_backend> backend_;
260};
261
262} // namespace adapters
263} // namespace integrated
264} // namespace database
Unified logging adapter for database operations.
logger_adapter(const logger_adapter &)=delete
void log_query(db_log_level level, const std::string &query, std::chrono::microseconds duration)
Log a SQL query execution.
common::VoidResult initialize()
Initialize the logger.
logger_adapter(const db_logger_config &config, logger_backend_type backend_type=logger_backend_type::auto_select)
Construct logger adapter with configuration.
void log_slow_query(const std::string &query, std::chrono::microseconds duration, std::chrono::milliseconds threshold)
Log a slow query with warning.
void log_transaction(const std::string &operation, bool success, const std::string &details)
Log a transaction operation.
logger_adapter(logger_adapter &&) noexcept
void log_connection_event(const std::string &event, const std::string &details)
Log a connection pool event.
common::VoidResult shutdown()
Shutdown the logger gracefully.
void log_pool_event(const std::string &event, std::size_t active, std::size_t idle)
Log a connection pool state change.
void log(db_log_level level, const std::string &message)
Generic log message.
static std::unique_ptr< backends::logger_backend > create_backend(const db_logger_config &config, logger_backend_type backend_type)
Create appropriate backend based on type.
void flush()
Flush pending log messages.
void log_error(const std::string &operation, const std::string &error_msg, const std::string &sql_state="")
Log a database error.
logger_adapter & operator=(const logger_adapter &)=delete
std::unique_ptr< backends::logger_backend > backend_
Logger backend implementation.
bool is_initialized() const
Check if logger is initialized.
~logger_adapter()
Destructor - ensures proper shutdown.
Common Result<T> pattern for integrated database system.
Unified configuration for integrated database system.
logger_backend_type
Logger backend type selection.
@ null
No-op backend (discard all logs)
@ auto_select
Automatically select best available backend.
@ system
Use common_system ILogger (fails if unavailable)
db_log_level
Database logging level enumeration.
backend_type
Database backend type enumeration.
kcenon::common::VoidResult VoidResult
Primary VoidResult type - use this for void operations.
Definition result.h:33