4#include "../util/non_copyable.h"
91 std::ostringstream _stream;
231 _default_level = default_level;
259 template <
typename... Args>
262 _write(std::vformat(format, std::make_format_args(args...)), _default_level, _default_verbosity);
275 LoggerStream stream(
this, _default_level, _default_verbosity);
300 return _handler.get();
318 std::shared_ptr<LogHandler> _handler;
352 return (verbosity &
_logger->verbosity) && level >=
_logger->minimum_level;
395 virtual void write(
const std::string& message,
const LogLevel level)
override;
Default log handler.
Definition logger.h:382
virtual void write(const std::string &message, const LogLevel level) override
Write the log to stdout.
Handles log messages.
Definition logger.h:331
virtual void write(const std::string &message, const LogLevel level)=0
Do actions when the logger need to write a message.
Logger * _logger
Logger instance bound to this handler.
Definition logger.h:371
bool write_file
Indicate to the handler that the message should be written in a file.
Definition logger.h:365
bool write_stdout
Indicate to the handler that the message should be sent to stdout / stderr.
Definition logger.h:360
virtual bool canWrite(const LogLevel level, const LogVerbosity verbosity)
Check if the handler will write according to the the level and verbosity.
Definition logger.h:350
Add stream capabilities logs, letting you do calls like oe::log << any_variable.
Definition logger.h:55
LoggerStream(LoggerStream &&other) noexcept
Move constructor.
~LoggerStream()
Destructor.
LoggerStream & operator<<(T const &data)
Stream chaining operator.
Definition logger.h:82
LoggerStream & operator=(LoggerStream &&other) noexcept
Move operator.
Log messages.
Definition logger.h:108
std::string name
Logger name to display (also used as file name if log are recorded).
Definition logger.h:118
Logger & setDefaultVerbosity(const LogVerbosity verbosity)
Set default log verbosity used when using log << gabuzomeu or log(gabuzomeu).
Definition logger.h:240
LoggerStream critical(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to receive criticals logs.
Definition logger.h:205
LoggerStream info(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log informations.
Definition logger.h:172
LogLevel minimum_level
Log level below this one won't be sent.
Definition logger.h:125
void setHandler(std::shared_ptr< LogHandler > handler)
Set underlying log handler.
void operator()(std::string_view format, Args &&... args)
Log a formatted message using default level/verbosity.
Definition logger.h:260
LoggerStream debug(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log debugs.
Definition logger.h:161
LoggerStream warn(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log warnings.
Definition logger.h:183
void log(const std::ostringstream &stream, const LogLevel level=default_log_level, const LogVerbosity verbosity=default_log_verbosity)
Log a stringstream message.
LoggerStream trace(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log traces.
Definition logger.h:150
LoggerStream as(LogLevel level, const LogVerbosity verbosity=default_log_verbosity)
Log at a specific log level. Used for example if the log level is only known at runtime.
Definition logger.h:218
LoggerStream operator<<(T const &data)
Log a message using streams.
Definition logger.h:273
LogVerbosity verbosity
Verbosity flags, used to filter logs.
Definition logger.h:131
LoggerStream error(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log errors.
Definition logger.h:194
Logger & setDefaultLevel(const LogLevel default_level)
Set log level used when using log << gabuzomeu or log(gabuzomeu).
Definition logger.h:229
static Logger & getGlobalInstance()
Get the default global log instance.
Definition logger.h:138
LogHandler * getHandler()
Get underlying log handler.
Definition logger.h:298
Prevent class to be copied.
Definition non_copyable.h:12
Input/Output abstractions (Filesystem, Network, ...).
Definition file.h:10
uint64_t LogVerbosity
Log verbosity serves as a filter below the LogLevel.
Definition logger.h:42
constexpr LogLevel default_log_level
Default log level when no level is supplied to log functions.
Definition logger.h:35
LogLevel
Severity of the log.
Definition logger.h:21
@ LEVEL_INFO
Definition logger.h:24
@ LEVEL_TRACE
Definition logger.h:22
@ LEVEL_WARNING
Definition logger.h:25
@ LEVEL_ERROR
Definition logger.h:26
@ LEVEL_CRITICAL
Definition logger.h:27
@ LEVEL_DEBUG
Definition logger.h:23
constexpr uint64_t default_log_verbosity
Default log verbosity.
Definition logger.h:47
Oxygen Engine common namespace.
Definition debug.h:17
io::Logger & log
Global logger instance.