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) 
  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);
 
  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(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.