Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
database::integrated::adapters::backends::fallback_logger_backend Class Reference

Basic logger backend using standard C++ streams. More...

#include <fallback_logger_backend.h>

Inheritance diagram for database::integrated::adapters::backends::fallback_logger_backend:
Inheritance graph
Collaboration diagram for database::integrated::adapters::backends::fallback_logger_backend:
Collaboration graph

Public Member Functions

 fallback_logger_backend (const db_logger_config &config)
 Construct fallback logger backend.
 
 ~fallback_logger_backend () override
 
 fallback_logger_backend (const fallback_logger_backend &)=delete
 
fallback_logger_backendoperator= (const fallback_logger_backend &)=delete
 
 fallback_logger_backend (fallback_logger_backend &&)=delete
 
fallback_logger_backendoperator= (fallback_logger_backend &&)=delete
 
common::VoidResult initialize () override
 Initialize the logger backend.
 
common::VoidResult shutdown () override
 Shutdown the logger backend gracefully.
 
bool is_initialized () const override
 Check if backend is initialized.
 
void log (db_log_level level, const std::string &message) override
 Log a message.
 
void flush () override
 Flush pending log messages.
 
- Public Member Functions inherited from database::integrated::adapters::backends::logger_backend
virtual ~logger_backend ()=default
 

Private Attributes

const db_logger_configconfig_
 
bool initialized_
 
std::mutex mutex_
 
std::ofstream log_file_
 

Detailed Description

Basic logger backend using standard C++ streams.

This backend provides simple logging when common_system logging is unavailable. Uses std::cout for console output and std::ofstream for file output.

Definition at line 42 of file fallback_logger_backend.h.

Constructor & Destructor Documentation

◆ fallback_logger_backend() [1/3]

database::integrated::adapters::backends::fallback_logger_backend::fallback_logger_backend ( const db_logger_config & config)
explicit

Construct fallback logger backend.

Parameters
configLogger configuration

Definition at line 75 of file fallback_logger_backend.cpp.

◆ ~fallback_logger_backend()

database::integrated::adapters::backends::fallback_logger_backend::~fallback_logger_backend ( )
override

Definition at line 80 of file fallback_logger_backend.cpp.

81{
82 if (initialized_)
83 {
84 shutdown();
85 }
86}
common::VoidResult shutdown() override
Shutdown the logger backend gracefully.

References initialized_, and shutdown().

Here is the call graph for this function:

◆ fallback_logger_backend() [2/3]

database::integrated::adapters::backends::fallback_logger_backend::fallback_logger_backend ( const fallback_logger_backend & )
delete

◆ fallback_logger_backend() [3/3]

database::integrated::adapters::backends::fallback_logger_backend::fallback_logger_backend ( fallback_logger_backend && )
delete

Member Function Documentation

◆ flush()

void database::integrated::adapters::backends::fallback_logger_backend::flush ( )
overridevirtual

Flush pending log messages.

Implements database::integrated::adapters::backends::logger_backend.

Definition at line 182 of file fallback_logger_backend.cpp.

183{
184 std::lock_guard<std::mutex> lock(mutex_);
185 std::cout.flush();
186 if (log_file_.is_open())
187 {
188 log_file_.flush();
189 }
190}

References log_file_, and mutex_.

◆ initialize()

common::VoidResult database::integrated::adapters::backends::fallback_logger_backend::initialize ( )
overridevirtual

Initialize the logger backend.

Returns
VoidResult::ok() on success, error on failure

Implements database::integrated::adapters::backends::logger_backend.

Definition at line 88 of file fallback_logger_backend.cpp.

89{
90 if (initialized_)
91 {
92 return common::ok();
93 }
94
95 try
96 {
97 // Open log file if file logging enabled
99 {
100 // Create directory if it doesn't exist
101 std::filesystem::path log_dir(config_.log_directory);
102 if (!std::filesystem::exists(log_dir))
103 {
104 std::filesystem::create_directories(log_dir);
105 }
106
107 std::string log_path = config_.log_directory + "/database.log";
108 log_file_.open(log_path, std::ios::app);
109 if (!log_file_.is_open())
110 {
111 return make_error("Failed to open log file: " + log_path);
112 }
113 }
114
115 initialized_ = true;
116 return common::ok();
117 }
118 catch (const std::exception& e)
119 {
120 return make_error(std::string("Logger initialization failed: ") + e.what());
121 }
122}
VoidResult ok()
bool enable_file_logging
Enable logging to file (in addition to console)
std::string log_directory
Directory for log files.

References config_, database::integrated::db_logger_config::enable_file_logging, initialized_, database::integrated::db_logger_config::log_directory, log_file_, and common::ok().

Here is the call graph for this function:

◆ is_initialized()

bool database::integrated::adapters::backends::fallback_logger_backend::is_initialized ( ) const
overridevirtual

Check if backend is initialized.

Returns
true if initialized and ready to log

Implements database::integrated::adapters::backends::logger_backend.

Definition at line 148 of file fallback_logger_backend.cpp.

149{
150 return initialized_;
151}

References initialized_.

◆ log()

void database::integrated::adapters::backends::fallback_logger_backend::log ( db_log_level level,
const std::string & message )
overridevirtual

Log a message.

Parameters
levelLog level
messageMessage to log

Implements database::integrated::adapters::backends::logger_backend.

Definition at line 153 of file fallback_logger_backend.cpp.

154{
155 if (!initialized_)
156 {
157 return;
158 }
159
160 // Check if this level should be logged
161 if (level < config_.min_log_level)
162 {
163 return;
164 }
165
166 std::lock_guard<std::mutex> lock(mutex_);
167
168 // Format: [2025-01-03 14:30:45.123] [INFO ] message
169 std::string log_line
170 = "[" + format_timestamp() + "] [" + log_level_to_string(level) + "] " + message;
171
172 // Write to console
173 std::cout << log_line << std::endl;
174
175 // Write to file if enabled
176 if (config_.enable_file_logging && log_file_.is_open())
177 {
178 log_file_ << log_line << std::endl;
179 }
180}
db_log_level min_log_level
Minimum log level to output.

References config_, database::integrated::db_logger_config::enable_file_logging, initialized_, log_file_, database::integrated::db_logger_config::min_log_level, and mutex_.

◆ operator=() [1/2]

fallback_logger_backend & database::integrated::adapters::backends::fallback_logger_backend::operator= ( const fallback_logger_backend & )
delete

◆ operator=() [2/2]

fallback_logger_backend & database::integrated::adapters::backends::fallback_logger_backend::operator= ( fallback_logger_backend && )
delete

◆ shutdown()

common::VoidResult database::integrated::adapters::backends::fallback_logger_backend::shutdown ( )
overridevirtual

Shutdown the logger backend gracefully.

Returns
VoidResult::ok() on success, error on failure

Implements database::integrated::adapters::backends::logger_backend.

Definition at line 124 of file fallback_logger_backend.cpp.

125{
126 if (!initialized_)
127 {
128 return common::ok();
129 }
130
131 try
132 {
133 std::lock_guard<std::mutex> lock(mutex_);
134 if (log_file_.is_open())
135 {
136 log_file_.flush();
137 log_file_.close();
138 }
139 initialized_ = false;
140 return common::ok();
141 }
142 catch (const std::exception& e)
143 {
144 return make_error(std::string("Logger shutdown failed: ") + e.what());
145 }
146}

References initialized_, log_file_, mutex_, and common::ok().

Referenced by ~fallback_logger_backend().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ config_

const db_logger_config& database::integrated::adapters::backends::fallback_logger_backend::config_
private

Definition at line 66 of file fallback_logger_backend.h.

Referenced by initialize(), and log().

◆ initialized_

bool database::integrated::adapters::backends::fallback_logger_backend::initialized_
private

◆ log_file_

std::ofstream database::integrated::adapters::backends::fallback_logger_backend::log_file_
private

Definition at line 69 of file fallback_logger_backend.h.

Referenced by flush(), initialize(), log(), and shutdown().

◆ mutex_

std::mutex database::integrated::adapters::backends::fallback_logger_backend::mutex_
private

Definition at line 68 of file fallback_logger_backend.h.

Referenced by flush(), log(), and shutdown().


The documentation for this class was generated from the following files: