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), \
52#define CONSOLIX_LOGO_STREAM() \
53 LOGIT_STREAM_TRACE_TO(CONSOLIX_LOGIT_LOGO_INDEX)
57#define CONSOLIX_UNIQUE_FILE_STREAM() \
58 LOGIT_STREAM_TRACE_TO(CONSOLIX_LOGIT_UNIQUE_FILE_INDEX)
62#define CONSOLIX_UNIQUE_FILE_NAME() \
63 LOGIT_GET_LAST_FILE_NAME(CONSOLIX_LOGIT_UNIQUE_FILE_INDEX)
67#ifndef CONSOLIX_CONSOLE_PATTERN
68#define CONSOLIX_CONSOLE_PATTERN LOGIT_CONSOLE_PATTERN
73#ifndef CONSOLIX_CONSOLE_DEBUG_PATTERN
74#define CONSOLIX_CONSOLE_DEBUG_PATTERN "%H:%M:%S.%e | [%25!g:%#] [%l] %^%v%$"
79#ifndef CONSOLIX_FILE_LOGGER_PATTERN
80#define CONSOLIX_FILE_LOGGER_PATTERN LOGIT_FILE_LOGGER_PATTERN
85#ifndef CONSOLIX_FILE_LOGGER_PATH
86#define CONSOLIX_FILE_LOGGER_PATH LOGIT_FILE_LOGGER_PATH
91#ifndef CONSOLIX_UNIQUE_FILE_LOGGER_PATH
92#define CONSOLIX_UNIQUE_FILE_LOGGER_PATH LOGIT_UNIQUE_FILE_LOGGER_PATH
97#ifndef CONSOLIX_FILE_LOGGER_AUTO_DELETE_DAYS
98#define CONSOLIX_FILE_LOGGER_AUTO_DELETE_DAYS LOGIT_FILE_LOGGER_AUTO_DELETE_DAYS
103#ifndef CONSOLIX_UNIQUE_FILE_LOGGER_HASH_LENGTH
104#define CONSOLIX_UNIQUE_FILE_LOGGER_HASH_LENGTH LOGIT_UNIQUE_FILE_LOGGER_HASH_LENGTH
109#define CONSOLIX_SET_DEBUG_MODE(mode) \
110 LOGIT_SET_LOGGER_ENABLED(CONSOLIX_LOGIT_DEBUG_INDEX, mode)
112#include <log-it/LogIt.hpp>
122 class LoggerComponent :
public IAppComponent {
135 : m_debug_pattern(console_debug_pattern) {
136 init_logger(console_pattern, file_pattern, auto_delete_days);
153 if (args.count(
"debug") || args.count(
"d")) {
154 CONSOLIX_SET_DEBUG_MODE(
true);
167 void process()
override {}
170 std::string m_debug_pattern;
171 std::atomic<bool> m_is_init{
false};
178 const std::string& console_pattern,
179 const std::string& file_pattern,
180 int auto_delete_days) {
181 static bool is_once =
false;
185 LOGIT_ADD_CONSOLE_SINGLE_MODE(console_pattern,
true);
186 LOGIT_ADD_CONSOLE_SINGLE_MODE(
"%^%v%$",
true);
187 LOGIT_ADD_CONSOLE(m_debug_pattern,
true);
188 CONSOLIX_SET_DEBUG_MODE(
false);
191 LOGIT_ADD_FILE_LOGGER(
198 LOGIT_ADD_UNIQUE_FILE_LOGGER_SINGLE_MODE(
214#define CONSOLIX_STREAM() \
215 consolix::MultiStream()
218#define CONSOLIX_LOGO_STREAM() \
219 consolix::MultiStream()
MultiStream class for unified log output handling.
bool initialize() override
bool is_initialized() const override
LoggerComponent()=default
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.