16 std::unique_ptr<log_formatter_interface> formatter)
18 , append_mode_(append)
20 std::lock_guard<std::mutex> lock(
mutex_);
25 std::lock_guard<std::mutex> lock(
mutex_);
30 std::lock_guard<std::mutex> lock(
mutex_);
49 std::lock_guard<std::mutex> lock(
mutex_);
61 std::lock_guard<std::mutex> lock(
mutex_);
83 std::filesystem::path file_path(
filename_);
84 std::filesystem::path dir = file_path.parent_path();
87 if (dir_result.is_err())
return dir_result;
90 auto mode =
append_mode_ ? std::ios::app : std::ios::trunc;
99 if (check.is_err())
return check;
~file_writer() override
Destructor.
common::VoidResult open_internal()
Open the file (internal, caller must hold mutex)
void close_internal()
Close the file (internal, caller must hold mutex)
std::unique_ptr< log_formatter_interface > formatter_
common::VoidResult write(const log_entry &entry) override
Write a log entry to file.
file_writer(const std::string &filename, bool append=true, std::unique_ptr< log_formatter_interface > formatter=nullptr)
Constructor.
std::atomic< size_t > bytes_written_
std::string format_entry(const log_entry &entry) const
Format a log entry using the current formatter.
std::ofstream file_stream_
std::atomic< bool > is_open_
common::VoidResult close() override
Close the file.
bool is_healthy() const override
Check if writer is healthy.
common::VoidResult flush() override
Flush file stream.
std::string to_string() const
Convert to std::string.
Structured error context for debugging log system failures.
File writer for logging to files with optional buffering.
Data structures for representing log entries and source locations kcenon.
common::VoidResult check_stream_state(const Stream &stream, const std::string &operation_name="operation")
Stream state verification helper.
common::VoidResult try_open_operation(F &&operation)
Error handling helper for file open operations.
common::VoidResult try_write_operation(F &&operation, logger_error_code default_error_code=logger_error_code::file_write_failed)
Error handling helper for write operations.
common::VoidResult check_condition(bool condition, logger_error_code error_code, const std::string &message)
Condition verification helper.
common::VoidResult ensure_directory_exists(const std::filesystem::path &dir)
Directory creation helper.
common::VoidResult make_logger_void_result(logger_error_code code, const std::string &message="")
Represents a single log entry with all associated metadata.
small_string_256 message
The actual log message.