EpcTools
An event based multi-threaded C++ development framework.
|
Go to the documentation of this file.
18 #ifndef __elogger_h_included
19 #define __elogger_h_included
26 #include <unordered_map>
37 #ifdef SPDLOG_LEVEL_NAMES
38 #undef SPDLOG_LEVEL_NAMES
42 #define SPDLOG_LEVEL_NAMES { "debug", "info", "startup", "minor", "major", "critical", "off" };
44 #define SPDLOG_ENABLE_SYSLOG
47 #include "spdlog/spdlog.h"
48 #include "spdlog/async.h"
106 ELogger(Int logid, cpStr category, Int sinkid);
137 auto srch = m_logs.find(logid);
138 if (srch == m_logs.end())
139 throw ELoggerError_LogNotFound(logid);
140 return *srch->second;
149 if (m_sinksets.find(sinkid) == m_sinksets.end())
150 throw ELoggerError_SinkSetNotFound(sinkid);
152 return *m_sinksets[sinkid];
158 template<
typename... Args>
159 Void
debug( cpStr format,
const Args &... args) { m_log->trace(format, args...); }
163 template<
typename... Args>
164 Void
info( cpStr format,
const Args &... args) { m_log->debug(format, args...); }
168 template<
typename... Args>
169 Void
startup( cpStr format,
const Args &... args) { m_log->info(format, args...); }
173 template<
typename... Args>
174 Void
minor( cpStr format,
const Args &... args) { m_log->warn(format, args...); }
178 template<
typename... Args>
179 Void
major( cpStr format,
const Args &... args) { m_log->error(format, args...); }
183 template<
typename... Args>
184 Void
critical( cpStr format,
const Args &... args) { m_log->critical(format, args...); }
198 const std::string &
get_name() {
return m_log->name(); }
202 spdlog::level::level_enum
get_level() {
return m_log->level(); }
205 Void
set_level(spdlog::level::level_enum lvl) { m_log->set_level(lvl); }
209 const std::map<std::string,std::shared_ptr<ELogger>>
get_loggers() {
return m_logs_by_name; }
223 static std::unordered_map<Int,std::shared_ptr<ELoggerSinkSet>> m_sinksets;
224 static std::unordered_map<Int,std::shared_ptr<ELogger>> m_logs;
225 static std::map<std::string,std::shared_ptr<ELogger>> m_logs_by_name;
227 static Void verifyPath(cpStr filename);
232 std::shared_ptr<spdlog::async_logger> m_log;
276 { m_sinkptr->set_level( (spdlog::level::level_enum)loglevel ); m_loglevel = loglevel;
return getLogLevel(); }
281 { m_pattern = pattern; m_sinkptr->set_pattern( m_pattern );
return getPattern(); }
297 : m_sinktype( sinktype ),
298 m_loglevel( loglevel ),
306 spdlog::sink_ptr
setSinkPtr( spdlog::sink_ptr &sinkptr ) {
return m_sinkptr = sinkptr; }
310 static EString m_defaultpattern;
315 spdlog::sink_ptr m_sinkptr;
370 cpStr filename, Bool truncate );
398 cpStr filename,
size_t maxsizemb,
size_t maxfiles, Bool rotateonopen );
434 cpStr filename, Bool truncate, Int rolloverhour, Int rolloverminute );
455 Int m_rolloverminute;
474 Void
addSink(std::shared_ptr<ELoggerSink> &sink)
476 m_sinks.push_back( sink );
477 m_spdlog_sinks.push_back( sink->
getSinkPtr() );
482 std::vector<std::shared_ptr<ELoggerSink>> &
getVector() {
return m_sinks; }
490 Int
setId(Int
id) {
return m_id = id; }
497 std::vector<std::shared_ptr<ELoggerSink>> m_sinks;
498 std::vector<spdlog::sink_ptr> m_spdlog_sinks;
501 #endif // #define __elogger_h_included
EString & getPattern()
Retrieves the log message formatting pattern.
Definition: elogger.h:270
const std::map< std::string, std::shared_ptr< ELogger > > get_loggers()
Retrieve the defined loggers.
Definition: elogger.h:209
virtual ~ELoggerSinkDailyFile()
Class destructor.
Definition: elogger.h:436
#define DECLARE_ERROR(__e__)
Declares exception class derived from EError with no constructor parameters.
Definition: eerror.h:53
Int getId()
Retrieves teh sink set ID.
Definition: elogger.h:493
static EString & getDefaultPattern()
Retrieves the default log message formatting pattern.
Definition: elogger.h:289
Debug.
Definition: elogger.h:87
const std::string & get_name()
Retrieve the name (category) of the logger.
Definition: elogger.h:198
Defines base class for exceptions and declaration helper macros.
size_t getMaxFiles()
Retrieves the maximum number of files in the rotation.
Definition: elogger.h:410
static Void init(EGetOpt &opt)
Initilizes the logs from the configuration file.
Definition: elogger.cpp:123
virtual ~ELoggerSinkStdout()
Class destructor.
Definition: elogger.h:341
Int setId(Int id)
Assigns the sink set ID.
Definition: elogger.h:490
Startup.
Definition: elogger.h:91
ELoggerSink(SinkType sinktype, ELogger::LogLevel loglevel, cpStr pattern)
The base class constructor.
Definition: elogger.h:296
spdlog::sink_ptr getSinkPtr()
Retrieves the underlying spdlog sink pointer.
Definition: elogger.h:285
Void startup(cpStr format, const Args &... args)
Writes a startup message to this logger.
Definition: elogger.h:169
Void set_level(spdlog::level::level_enum lvl)
Sets the current log level of the underlying spdlog object.
Definition: elogger.h:205
Void setLogLevel(LogLevel lvl)
Assign a log level for this logger. Any log messages lower than the specified log level will not be w...
Definition: elogger.h:191
#define DECLARE_ERROR_ADVANCED2(__e__)
Declares exception class derived from EError with an Int as a constructor parameter and developer def...
Definition: eerror.h:67
#define DECLARE_ERROR_ADVANCED3(__e__)
Declares exception class derived from EError with an Int and a const char * as constructor parameters...
Definition: eerror.h:75
LogLevel getLogLevel()
Retrieve the currently assigned log level.
Definition: elogger.h:194
std::vector< std::shared_ptr< ELoggerSink > > & getVector()
Retrieves the vector of sinks.
Definition: elogger.h:482
ELogger(Int logid, cpStr category, Int sinkid)
Class constructor.
Definition: elogger.cpp:110
Void info(cpStr format, const Args &... args)
Writes a info message to this logger.
Definition: elogger.h:164
Disables logging.
Definition: elogger.h:99
EString & getFilename()
Retrieves the log file name.
Definition: elogger.h:440
virtual ~ELoggerSinkBasicFile()
Class destructor.
Definition: elogger.h:372
Informational.
Definition: elogger.h:89
Macros for various standard C library functions and standard includes.
A standard error sink.
Definition: elogger.h:347
virtual ~ELoggerSinkRotatingFile()
Class destructor.
Definition: elogger.h:400
Minor.
Definition: elogger.h:93
size_t getMaxSizeMB()
Retrieves the maximum log file size.
Definition: elogger.h:407
A syslog sink.
Definition: elogger.h:319
Void addSink(std::shared_ptr< ELoggerSink > &sink)
Adds a sink to the sink set.
Definition: elogger.h:474
standard output
Definition: elogger.h:248
Defines a group of output sinks that can be assigned to a logger.
Definition: elogger.h:462
ELoggerSinkRotatingFile(ELogger::LogLevel loglevel, cpStr pattern, cpStr filename, size_t maxsizemb, size_t maxfiles, Bool rotateonopen)
Class constructor.
Definition: elogger.cpp:385
spdlog::sink_ptr setSinkPtr(spdlog::sink_ptr &sinkptr)
Assigns the spdlog pointer value.
Definition: elogger.h:306
a file that rolls over each day at a specified time
Definition: elogger.h:256
ELogger::LogLevel getLogLevel()
Retrieves the log level for this sink.
Definition: elogger.h:267
Void major(cpStr format, const Args &... args)
Writes a major message to this logger.
Definition: elogger.h:179
static Void uninit()
Shuts down the logging system.
Definition: elogger.cpp:270
Int getRolloverMinute()
Retrieves the minute within the hour when the rollover will occur.
Definition: elogger.h:449
a simple file
Definition: elogger.h:252
syslog
Definition: elogger.h:246
#define DECLARE_ERROR_ADVANCED4(__e__)
Declares exception class derived from EError with an const char* as a constructor parameter and devel...
Definition: eerror.h:83
Defines a logger.
Definition: elogger.h:78
virtual ~ELoggerSinkSyslog()
Class destructor.
Definition: elogger.h:327
EString & getFilename()
Retrieves the log file name.
Definition: elogger.h:404
static EString & applicationName(cpStr app)
Assigns the application name.
Definition: elogger.h:115
static ELoggerSinkSet & createSinkSet(Int sinkid)
Manually creates a sink set.
Definition: elogger.cpp:291
Bool getTruncate()
Retrieves the truncate flag.
Definition: elogger.h:379
static EString & applicationName()
Retrieves the application name.
Definition: elogger.h:112
virtual ~ELoggerSink()
Class destructor.
Definition: elogger.h:260
ELogger::LogLevel setLogLevel(ELogger::LogLevel loglevel)
Assigns the sink log level.
Definition: elogger.h:275
Int getRolloverHour()
Retrieves the hour during the day when the rollover will occur.
Definition: elogger.h:446
Defines various utility functions.
std::vector< spdlog::sink_ptr > & getSpdlogVector()
Retrieves the spdlog vector of sinks.
Definition: elogger.h:485
A daily file sink.
Definition: elogger.h:423
ELoggerSinkSet(Int id=-1)
Class constructor.
Definition: elogger.h:468
Void critical(cpStr format, const Args &... args)
Writes a critical message to this logger.
Definition: elogger.h:184
static ELogger & log(Int logid)
Retrieves the requested ELogger object.
Definition: elogger.h:135
Critical.
Definition: elogger.h:97
Void flush()
Flushes any unwritten log messages to the underlying sinks.
Definition: elogger.h:187
ELoggerSinkBasicFile(ELogger::LogLevel loglevel, cpStr pattern, cpStr filename, Bool truncate)
Class constructor.
Definition: elogger.cpp:357
Major.
Definition: elogger.h:95
static ELogger & createLog(Int logid, cpStr category, Int sinkid)
Manually creates a logger.
Definition: elogger.cpp:275
Definition: elogger.cpp:80
LogLevel
Defines the various log levels.
Definition: elogger.h:84
SinkType getSinkType()
Retrieves the sink type.
Definition: elogger.h:264
~ELogger()
Class destructor.
Definition: elogger.h:108
SinkType
Defines the type of output sinks.
Definition: elogger.h:243
Manages configuration parameters from a file and the command line.
~ELoggerSinkSet()
Class destructor.
Definition: elogger.h:470
virtual ~ELoggerSinkStderr()
Class destructor.
Definition: elogger.h:355
a rotating set of files
Definition: elogger.h:254
String class.
Definition: estring.h:30
Bool getRotateOnOpen()
Retrieves the rotate on open setting.
Definition: elogger.h:413
EString & getFilename()
Retrieves the log file name.
Definition: elogger.h:376
ELoggerSinkDailyFile(ELogger::LogLevel loglevel, cpStr pattern, cpStr filename, Bool truncate, Int rolloverhour, Int rolloverminute)
Class constructor.
Definition: elogger.cpp:370
static ELoggerSinkSet & sinkSet(Int sinkid)
Retrieves the requested sink set object.
Definition: elogger.h:147
A rotating file sink.
Definition: elogger.h:387
Encapsulates and extends a std::string object.
Represents a logger output sink.
Definition: elogger.h:239
A standard output sink.
Definition: elogger.h:333
Void minor(cpStr format, const Args &... args)
Writes a minor message to this logger.
Definition: elogger.h:174
spdlog::level::level_enum get_level()
Retrieve the current log level from the underlying spdlog object.
Definition: elogger.h:202
Void debug(cpStr format, const Args &... args)
Writes a debug message to this logger.
Definition: elogger.h:159
Bool getTruncate()
Retrieves the truncate flag.
Definition: elogger.h:443
A basic file sink.
Definition: elogger.h:361
standard error
Definition: elogger.h:250
EString & setPattern(cpStr pattern)
Assigns the log message formatting pattern.
Definition: elogger.h:280