2#ifndef _CONSOLIX_LOGGER_COMPONENT_HPP_INCLUDED
3#define _CONSOLIX_LOGGER_COMPONENT_HPP_INCLUDED
9#if CONSOLIX_USE_LOGIT == 1
13#ifndef CONSOLIX_BASE_PATH
14#define CONSOLIX_BASE_PATH {}
17#ifndef LOGIT_BASE_PATH
18#define LOGIT_BASE_PATH CONSOLIX_BASE_PATH
23#define CONSOLIX_LOGIT_CONSOLE_INDEX 0
27#define CONSOLIX_LOGIT_LOGO_INDEX 1
31#define CONSOLIX_LOGIT_DEBUG_INDEX 2
35#define CONSOLIX_LOGIT_LOGGER_INDEX 3
39#define CONSOLIX_LOGIT_UNIQUE_FILE_INDEX 4
43#define CONSOLIX_STREAM() \
44 consolix::MultiStream( \
45 logit::LogLevel::LOG_LVL_TRACE, \
46 logit::make_relative(__FILE__, LOGIT_BASE_PATH), \
55#define CONSOLIX_LOG_STREAM(level) \
56 consolix::MultiStream( \
58 logit::make_relative(__FILE__, LOGIT_BASE_PATH), \
67#define CONSOLIX_LOG_STREAM_EX(level, ...) \
68 consolix::MultiStream( \
70 logit::make_relative(__FILE__, LOGIT_BASE_PATH), \
77#define CONSOLIX_LOGO_STREAM() \
78 LOGIT_STREAM_TRACE_TO(CONSOLIX_LOGIT_LOGO_INDEX)
82#define CONSOLIX_UNIQUE_FILE_STREAM() \
83 LOGIT_STREAM_TRACE_TO(CONSOLIX_LOGIT_UNIQUE_FILE_INDEX)
87#define CONSOLIX_UNIQUE_FILE_NAME() \
88 LOGIT_GET_LAST_FILE_NAME(CONSOLIX_LOGIT_UNIQUE_FILE_INDEX)
92#ifndef CONSOLIX_CONSOLE_PATTERN
93#define CONSOLIX_CONSOLE_PATTERN LOGIT_CONSOLE_PATTERN
98#ifndef CONSOLIX_CONSOLE_DEBUG_PATTERN
99#define CONSOLIX_CONSOLE_DEBUG_PATTERN "%H:%M:%S.%e | [%25!g:%#] [%l] %^%v%$"
104#ifndef CONSOLIX_FILE_LOGGER_PATTERN
105#define CONSOLIX_FILE_LOGGER_PATTERN LOGIT_FILE_LOGGER_PATTERN
110#ifndef CONSOLIX_FILE_LOGGER_PATH
111#define CONSOLIX_FILE_LOGGER_PATH LOGIT_FILE_LOGGER_PATH
116#ifndef CONSOLIX_UNIQUE_FILE_LOGGER_PATH
117#define CONSOLIX_UNIQUE_FILE_LOGGER_PATH LOGIT_UNIQUE_FILE_LOGGER_PATH
122#ifndef CONSOLIX_FILE_LOGGER_AUTO_DELETE_DAYS
123#define CONSOLIX_FILE_LOGGER_AUTO_DELETE_DAYS LOGIT_FILE_LOGGER_AUTO_DELETE_DAYS
128#ifndef CONSOLIX_UNIQUE_FILE_LOGGER_HASH_LENGTH
129#define CONSOLIX_UNIQUE_FILE_LOGGER_HASH_LENGTH LOGIT_UNIQUE_FILE_LOGGER_HASH_LENGTH
134#define CONSOLIX_SET_DEBUG_MODE(mode) \
135 LOGIT_SET_LOGGER_ENABLED(CONSOLIX_LOGIT_DEBUG_INDEX, mode)
147 class LoggerComponent :
public IAppComponent {
160 : m_debug_pattern(console_debug_pattern) {
161 init_logger(console_pattern, file_pattern, auto_delete_days);
172# if CONSOLIX_USE_CXXOPTS == 1
179 if (args.count(
"debug") || args.count(
"d")) {
180 CONSOLIX_SET_DEBUG_MODE(
true);
197 std::string m_debug_pattern;
198 std::atomic<bool> m_is_init{
false};
205 const std::string& console_pattern,
206 const std::string& file_pattern,
207 int auto_delete_days) {
208 static bool is_once =
false;
217 logit::ConsoleLogger::Config console_cfg;
218 console_cfg.async =
true;
219 console_cfg.routes.push_back(
220 logit::ConsoleStreamRoute::to_cout(
221 logit::LogLevel::LOG_LVL_TRACE,
222 logit::LogLevel::LOG_LVL_WARN));
223 console_cfg.routes.push_back(
224 logit::ConsoleStreamRoute::to_cerr(
225 logit::LogLevel::LOG_LVL_ERROR,
226 logit::LogLevel::LOG_LVL_FATAL));
227 LOGIT_ADD_CONSOLE_CONFIG(console_cfg, console_pattern);
229 LOGIT_ADD_CONSOLE_SINGLE_MODE(
"%^%v%$",
true);
230 LOGIT_ADD_CONSOLE(m_debug_pattern,
true);
231 CONSOLIX_SET_DEBUG_MODE(
false);
234 LOGIT_ADD_FILE_LOGGER(
241 LOGIT_ADD_UNIQUE_FILE_LOGGER_SINGLE_MODE(
257#define CONSOLIX_STREAM() \
258 consolix::MultiStream()
262#define CONSOLIX_LOG_STREAM(level) \
263 consolix::MultiStream()
266#define CONSOLIX_LOG_STREAM_EX(level, ...) \
267 consolix::MultiStream()
270#define CONSOLIX_LOGO_STREAM() \
271 consolix::MultiStream(false)
MultiStream class for unified log output handling.
Interface for defining application components.
bool initialize() override
Initializes the component. This method is called once before the component is processed.
bool is_initialized() const override
Checks if the component is initialized. Used to verify if the component is ready to be executed.
LoggerComponent()=default
void process() override
Executes the component's main logic. Called repeatedly during the application's main execution loop.
virtual ~LoggerComponent()=default
#define CONSOLIX_FILE_LOGGER_PATTERN
File log message pattern.
#define CONSOLIX_FILE_LOGGER_PATH
Default file logger path.
#define CONSOLIX_UNIQUE_FILE_LOGGER_PATH
Default unique file logger path.
#define CONSOLIX_UNIQUE_FILE_LOGGER_HASH_LENGTH
Default hash length for unique file names.
#define CONSOLIX_CONSOLE_PATTERN
Console log message pattern.
#define CONSOLIX_FILE_LOGGER_AUTO_DELETE_DAYS
Auto-delete log files older than the specified number of days.
#define CONSOLIX_CONSOLE_DEBUG_PATTERN
Debug console log message pattern.
< Utility modules and helpers.
T & get_service()
Retrieves a resource globally. Retrieves a reference to a globally registered resource from the Servi...
bool has_service()
Checks if a resource is registered globally.