Network System 0.1.1
High-performance modular networking library for scalable client-server applications
Loading...
Searching...
No Matches
kcenon::network::integration::basic_logger::impl Class Reference
Collaboration diagram for kcenon::network::integration::basic_logger::impl:
Collaboration graph

Public Member Functions

 impl (log_level min_level)
 
void log (log_level level, const std::string &message)
 
void log (log_level level, const std::string &message, const std::string &file, int line, const std::string &function)
 
bool is_level_enabled (log_level level) const
 
void flush ()
 
void set_min_level (log_level level)
 
log_level get_min_level () const
 

Private Attributes

std::mutex mutex_
 
std::atomic< int > min_level_
 

Detailed Description

Definition at line 124 of file logger_integration.cpp.

Constructor & Destructor Documentation

◆ impl()

kcenon::network::integration::basic_logger::impl::impl ( log_level min_level)
inlineexplicit

Definition at line 126 of file logger_integration.cpp.

126: min_level_(static_cast<int>(min_level)) {}

Member Function Documentation

◆ flush()

void kcenon::network::integration::basic_logger::impl::flush ( )
inline

Definition at line 172 of file logger_integration.cpp.

172 {
173 std::lock_guard<std::mutex> lock(mutex_);
174 std::fflush(stdout);
175 std::fflush(stderr);
176 }

Referenced by kcenon::network::integration::basic_logger::flush().

Here is the caller graph for this function:

◆ get_min_level()

log_level kcenon::network::integration::basic_logger::impl::get_min_level ( ) const
inline

Definition at line 182 of file logger_integration.cpp.

182 {
183 return static_cast<log_level>(min_level_.load());
184 }

Referenced by kcenon::network::integration::basic_logger::get_min_level().

Here is the caller graph for this function:

◆ is_level_enabled()

bool kcenon::network::integration::basic_logger::impl::is_level_enabled ( log_level level) const
inline

Definition at line 168 of file logger_integration.cpp.

168 {
169 return static_cast<int>(level) >= min_level_;
170 }

Referenced by kcenon::network::integration::basic_logger::is_level_enabled().

Here is the caller graph for this function:

◆ log() [1/2]

void kcenon::network::integration::basic_logger::impl::log ( log_level level,
const std::string & message )
inline

Definition at line 128 of file logger_integration.cpp.

128 {
129 if (static_cast<int>(level) < min_level_) return;
130
131 std::lock_guard<std::mutex> lock(mutex_);
132
133 auto timestamp = get_timestamp();
134 std::ostringstream oss;
135 oss << "[" << timestamp << "] "
136 << "[" << level_to_string(level) << "] "
137 << "[network_system] "
138 << message;
139
140 auto* target = (level >= log_level::error) ? stderr : stdout;
141 const auto& record = oss.str();
142 std::fwrite(record.data(), 1, record.size(), target);
143 std::fputc('\n', target);
144 std::fflush(target);
145 }
static const char * level_to_string(log_level level)

References kcenon::network::integration::get_timestamp(), kcenon::network::integration::level_to_string(), and kcenon::network::message.

Referenced by kcenon::network::integration::basic_logger::log(), and kcenon::network::integration::basic_logger::log().

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

◆ log() [2/2]

void kcenon::network::integration::basic_logger::impl::log ( log_level level,
const std::string & message,
const std::string & file,
int line,
const std::string & function )
inline

Definition at line 147 of file logger_integration.cpp.

148 {
149 if (static_cast<int>(level) < min_level_) return;
150
151 std::lock_guard<std::mutex> lock(mutex_);
152
153 auto timestamp = get_timestamp();
154 std::ostringstream oss;
155 oss << "[" << timestamp << "] "
156 << "[" << level_to_string(level) << "] "
157 << "[network_system] "
158 << message
159 << " (" << file << ":" << line << " in " << function << ")";
160
161 auto* target = (level >= log_level::error) ? stderr : stdout;
162 const auto& record = oss.str();
163 std::fwrite(record.data(), 1, record.size(), target);
164 std::fputc('\n', target);
165 std::fflush(target);
166 }

References kcenon::network::integration::get_timestamp(), kcenon::network::integration::level_to_string(), and kcenon::network::message.

Here is the call graph for this function:

◆ set_min_level()

void kcenon::network::integration::basic_logger::impl::set_min_level ( log_level level)
inline

Definition at line 178 of file logger_integration.cpp.

178 {
179 min_level_ = static_cast<int>(level);
180 }

Referenced by kcenon::network::integration::basic_logger::set_min_level().

Here is the caller graph for this function:

Member Data Documentation

◆ min_level_

std::atomic<int> kcenon::network::integration::basic_logger::impl::min_level_
private

Definition at line 188 of file logger_integration.cpp.

◆ mutex_

std::mutex kcenon::network::integration::basic_logger::impl::mutex_
mutableprivate

Definition at line 187 of file logger_integration.cpp.


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