|
Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
|
Core file writer for logging to files. More...
#include <file_writer.h>


Public Member Functions | |
| file_writer (const std::string &filename, bool append=true, std::unique_ptr< log_formatter_interface > formatter=nullptr) | |
| Constructor. | |
| ~file_writer () override | |
| Destructor. | |
| file_writer (const file_writer &)=delete | |
| file_writer & | operator= (const file_writer &)=delete |
| file_writer (file_writer &&)=delete | |
| file_writer & | operator= (file_writer &&)=delete |
| common::VoidResult | write (const log_entry &entry) override |
| Write a log entry to file. | |
| common::VoidResult | flush () override |
| Flush file stream. | |
| common::VoidResult | close () override |
| Close the file. | |
| std::string | get_name () const override |
| Get writer name. | |
| bool | is_open () const override |
| Check if file is open. | |
| bool | is_healthy () const override |
| Check if writer is healthy. | |
| size_t | get_file_size () const |
| Get current file size. | |
Public Member Functions inherited from kcenon::logger::log_writer_interface | |
| virtual | ~log_writer_interface ()=default |
Protected Member Functions | |
| std::string | format_entry (const log_entry &entry) const |
| Format a log entry using the current formatter. | |
| common::VoidResult | open_internal () |
| Open the file (internal, caller must hold mutex) | |
| void | close_internal () |
| Close the file (internal, caller must hold mutex) | |
| std::mutex & | get_mutex () const |
| Access the writer mutex for extended operations. | |
Protected Attributes | |
| std::string | filename_ |
| bool | append_mode_ |
| std::ofstream | file_stream_ |
| std::atomic< bool > | is_open_ {false} |
| std::atomic< size_t > | bytes_written_ {0} |
| std::unique_ptr< log_formatter_interface > | formatter_ |
| std::mutex | mutex_ |
Additional Inherited Members | |
Static Public Attributes inherited from kcenon::logger::sync_writer_tag | |
| static constexpr writer_category | category = writer_category::synchronous |
Core file writer for logging to files.
Pure file I/O implementation with direct mutex management. Designed to serve as the base layer in Decorator pattern compositions.
Thread-safe with internal mutex synchronization.
Category: Synchronous (blocking I/O to file)
Definition at line 44 of file file_writer.h.
|
explicit |
Constructor.
| filename | Path to the log file |
| append | Whether to append to existing file (default: true) |
| formatter | Custom log formatter (default: timestamp formatter) |
Definition at line 14 of file file_writer.cpp.
References mutex_, and open_internal().

|
override |
Destructor.
Definition at line 24 of file file_writer.cpp.
References close_internal(), and mutex_.

|
delete |
|
delete |
|
overridevirtual |
Close the file.
Implements kcenon::logger::log_writer_interface.
Definition at line 60 of file file_writer.cpp.
References close_internal(), mutex_, and kcenon::common::ok().

|
protected |
Close the file (internal, caller must hold mutex)
Definition at line 114 of file file_writer.cpp.
References file_stream_, and is_open_.
Referenced by close(), and ~file_writer().

|
overridevirtual |
Flush file stream.
Implements kcenon::logger::log_writer_interface.
Definition at line 48 of file file_writer.cpp.
References kcenon::logger::utils::check_stream_state(), file_stream_, kcenon::logger::flush_timeout, is_open_, mutex_, kcenon::common::ok(), and kcenon::logger::utils::try_write_operation().

|
protected |
Format a log entry using the current formatter.
Definition at line 70 of file file_writer.cpp.
References formatter_, kcenon::logger::log_entry::message, and kcenon::logger::small_string< SSO_SIZE >::to_string().
Referenced by write(), and kcenon::logger::rotating_file_writer::write().


|
inline |
Get current file size.
Definition at line 104 of file file_writer.h.
|
inlineprotected |
Access the writer mutex for extended operations.
Definition at line 126 of file file_writer.h.
Referenced by kcenon::logger::rotating_file_writer::rotate(), and kcenon::logger::rotating_file_writer::write().

|
inlineoverridevirtual |
Get writer name.
Implements kcenon::logger::log_writer_interface.
Reimplemented in kcenon::logger::rotating_file_writer.
Definition at line 89 of file file_writer.h.
Referenced by example_core_writers().

|
overridevirtual |
Check if writer is healthy.
Implements kcenon::logger::log_writer_interface.
Definition at line 66 of file file_writer.cpp.
References file_stream_, and is_open_.
|
inlinenodiscardoverridevirtual |
Check if file is open.
Implements kcenon::logger::log_writer_interface.
Definition at line 94 of file file_writer.h.
|
protected |
Open the file (internal, caller must hold mutex)
Definition at line 78 of file file_writer.cpp.
References append_mode_, bytes_written_, kcenon::logger::utils::check_condition(), kcenon::logger::utils::ensure_directory_exists(), kcenon::logger::file_open_failed, file_stream_, filename_, is_open_, kcenon::common::ok(), and kcenon::logger::utils::try_open_operation().
Referenced by file_writer().


|
delete |
|
delete |
|
overridevirtual |
Write a log entry to file.
| entry | The log entry to write |
Implements kcenon::logger::log_writer_interface.
Reimplemented in kcenon::logger::rotating_file_writer.
Definition at line 29 of file file_writer.cpp.
References bytes_written_, kcenon::logger::utils::check_stream_state(), file_stream_, kcenon::logger::file_write_failed, format_entry(), is_open_, kcenon::logger::make_logger_void_result(), mutex_, and kcenon::logger::utils::try_write_operation().

|
protected |
Definition at line 130 of file file_writer.h.
Referenced by open_internal(), and kcenon::logger::rotating_file_writer::perform_rotation().
|
protected |
Definition at line 134 of file file_writer.h.
Referenced by kcenon::logger::rotating_file_writer::get_file_size(), open_internal(), kcenon::logger::rotating_file_writer::perform_rotation(), write(), and kcenon::logger::rotating_file_writer::write().
|
protected |
Definition at line 132 of file file_writer.h.
Referenced by close_internal(), flush(), kcenon::logger::rotating_file_writer::get_file_size(), is_healthy(), open_internal(), kcenon::logger::rotating_file_writer::perform_rotation(), write(), and kcenon::logger::rotating_file_writer::write().
|
protected |
Definition at line 129 of file file_writer.h.
Referenced by kcenon::logger::rotating_file_writer::generate_rotated_filename(), kcenon::logger::rotating_file_writer::get_backup_files(), kcenon::logger::rotating_file_writer::get_file_size(), open_internal(), and kcenon::logger::rotating_file_writer::perform_rotation().
|
protected |
Definition at line 136 of file file_writer.h.
Referenced by format_entry().
|
protected |
Definition at line 133 of file file_writer.h.
Referenced by close_internal(), flush(), is_healthy(), open_internal(), and write().
|
mutableprotected |
Definition at line 137 of file file_writer.h.
Referenced by close(), file_writer(), flush(), write(), and ~file_writer().