Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
mock_logger Class Reference

Mock logger implementation for demonstration. More...

#include <mock_logger.h>

Inheritance diagram for mock_logger:
Inheritance graph
Collaboration diagram for mock_logger:
Collaboration graph

Public Types

using log_level = kcenon::common::interfaces::log_level
 
using log_entry = kcenon::common::interfaces::log_entry
 
using VoidResult = kcenon::common::VoidResult
 
using source_location = kcenon::common::source_location
 

Public Member Functions

 mock_logger ()
 
VoidResult log (log_level level, const std::string &message) override
 
VoidResult log (log_level level, std::string_view message, const source_location &loc=source_location::current()) override
 
VoidResult log (const log_entry &entry) override
 
bool is_enabled (log_level level) const override
 
VoidResult set_level (log_level level) override
 
log_level get_level () const override
 
VoidResult flush () override
 
void start ()
 
void stop ()
 

Private Member Functions

std::string format_time () const
 
std::string level_to_string (log_level level) const
 

Private Attributes

log_level min_level_
 
std::mutex mutex_
 

Detailed Description

Mock logger implementation for demonstration.

Implements common::interfaces::ILogger for use in examples. In a real application, this would be replaced with logger_system.

Note
Issue #261: Updated to use common_system's ILogger interface.

Definition at line 23 of file mock_logger.h.

Member Typedef Documentation

◆ log_entry

using mock_logger::log_entry = kcenon::common::interfaces::log_entry

Definition at line 26 of file mock_logger.h.

◆ log_level

using mock_logger::log_level = kcenon::common::interfaces::log_level

Definition at line 25 of file mock_logger.h.

◆ source_location

using mock_logger::source_location = kcenon::common::source_location

Definition at line 28 of file mock_logger.h.

◆ VoidResult

using mock_logger::VoidResult = kcenon::common::VoidResult

Definition at line 27 of file mock_logger.h.

Constructor & Destructor Documentation

◆ mock_logger()

mock_logger::mock_logger ( )
inline

Definition at line 30 of file mock_logger.h.

30: min_level_(log_level::trace) {}
log_level min_level_

Member Function Documentation

◆ flush()

VoidResult mock_logger::flush ( )
inlineoverride

Definition at line 107 of file mock_logger.h.

107 {
108 std::cout.flush();
109 std::cerr.flush();
110 return VoidResult::ok({});
111 }

Referenced by stop().

Here is the caller graph for this function:

◆ format_time()

std::string mock_logger::format_time ( ) const
inlineprivate

Definition at line 123 of file mock_logger.h.

123 {
124 auto now = std::chrono::system_clock::now();
125 auto time_t = std::chrono::system_clock::to_time_t(now);
126 auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
127 now.time_since_epoch()) % 1000;
128
129 std::ostringstream oss;
130 oss << std::put_time(std::localtime(&time_t), "%H:%M:%S");
131 oss << "." << std::setfill('0') << std::setw(3) << ms.count();
132 return oss.str();
133 }

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

Here is the caller graph for this function:

◆ get_level()

log_level mock_logger::get_level ( ) const
inlineoverride

Definition at line 103 of file mock_logger.h.

103 {
104 return min_level_;
105 }

References min_level_.

◆ is_enabled()

bool mock_logger::is_enabled ( log_level level) const
inlineoverride

Definition at line 94 of file mock_logger.h.

94 {
95 return static_cast<int>(level) >= static_cast<int>(min_level_);
96 }

References min_level_.

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

Here is the caller graph for this function:

◆ level_to_string()

std::string mock_logger::level_to_string ( log_level level) const
inlineprivate

Definition at line 135 of file mock_logger.h.

135 {
136 return std::string(kcenon::common::interfaces::to_string(level));
137 }

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

Here is the caller graph for this function:

◆ log() [1/3]

VoidResult mock_logger::log ( const log_entry & entry)
inlineoverride

Definition at line 72 of file mock_logger.h.

72 {
73 if (!is_enabled(entry.level)) {
74 return VoidResult::ok({});
75 }
76
77 std::lock_guard<std::mutex> lock(mutex_);
78 auto& stream = (entry.level >= log_level::error) ? std::cerr : std::cout;
79
80 stream << "[" << format_time() << "] "
81 << "[" << level_to_string(entry.level) << "] ";
82
83 if (!entry.file.empty()) {
84 size_t pos = entry.file.find_last_of("/\\");
85 std::string filename = (pos != std::string::npos) ? entry.file.substr(pos + 1) : entry.file;
86 stream << filename << ":" << entry.line << " (" << entry.function << ") ";
87 }
88
89 stream << entry.message << std::endl;
90
91 return VoidResult::ok({});
92 }
std::mutex mutex_
std::string level_to_string(log_level level) const
std::string format_time() const
bool is_enabled(log_level level) const override
Definition mock_logger.h:94
STL namespace.

References format_time(), is_enabled(), level_to_string(), and mutex_.

Here is the call graph for this function:

◆ log() [2/3]

VoidResult mock_logger::log ( log_level level,
const std::string & message )
inlineoverride

Definition at line 32 of file mock_logger.h.

32 {
33 if (!is_enabled(level)) {
34 return VoidResult::ok({});
35 }
36
37 std::lock_guard<std::mutex> lock(mutex_);
38 auto& stream = (level >= log_level::error) ? std::cerr : std::cout;
39
40 stream << "[" << format_time() << "] "
41 << "[" << level_to_string(level) << "] "
42 << message << std::endl;
43
44 return VoidResult::ok({});
45 }

References format_time(), is_enabled(), level_to_string(), and mutex_.

Here is the call graph for this function:

◆ log() [3/3]

VoidResult mock_logger::log ( log_level level,
std::string_view message,
const source_location & loc = source_location::current() )
inlineoverride

Definition at line 47 of file mock_logger.h.

49 {
50 if (!is_enabled(level)) {
51 return VoidResult::ok({});
52 }
53
54 std::lock_guard<std::mutex> lock(mutex_);
55 auto& stream = (level >= log_level::error) ? std::cerr : std::cout;
56
57 stream << "[" << format_time() << "] "
58 << "[" << level_to_string(level) << "] ";
59
60 std::string file = loc.file_name();
61 if (!file.empty()) {
62 size_t pos = file.find_last_of("/\\");
63 std::string filename = (pos != std::string::npos) ? file.substr(pos + 1) : file;
64 stream << filename << ":" << loc.line() << " (" << loc.function_name() << ") ";
65 }
66
67 stream << message << std::endl;
68
69 return VoidResult::ok({});
70 }

References format_time(), is_enabled(), level_to_string(), and mutex_.

Here is the call graph for this function:

◆ set_level()

VoidResult mock_logger::set_level ( log_level level)
inlineoverride

Definition at line 98 of file mock_logger.h.

98 {
99 min_level_ = level;
100 return VoidResult::ok({});
101 }

References min_level_.

◆ start()

void mock_logger::start ( )
inline

Definition at line 113 of file mock_logger.h.

113 {
114 std::cout << "[MockLogger] Started" << std::endl;
115 }

◆ stop()

void mock_logger::stop ( )
inline

Definition at line 117 of file mock_logger.h.

117 {
118 flush();
119 std::cout << "[MockLogger] Stopped" << std::endl;
120 }
VoidResult flush() override

References flush().

Here is the call graph for this function:

Member Data Documentation

◆ min_level_

log_level mock_logger::min_level_
private

Definition at line 140 of file mock_logger.h.

Referenced by get_level(), is_enabled(), and set_level().

◆ mutex_

std::mutex mock_logger::mutex_
mutableprivate

Definition at line 141 of file mock_logger.h.

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


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