1#ifndef OE_CORE_LOGGER_H
2#define OE_CORE_LOGGER_H
5#include "../util/non_copyable.h"
93 std::ostringstream _stream;
233 _default_level = default_level;
264 template <
typename... Args>
265 void operator()(fmt::format_string<Args...> format, Args&&... args)
267 _write(fmt::vformat(format, fmt::make_format_args(args...)), _default_level, _default_verbosity);
280 LoggerStream stream(
this, _default_level, _default_verbosity);
305 return _handler.get();
323 std::unique_ptr<LogHandler> _handler;
400 virtual void write(
const std::string& message,
const LogLevel level)
override;
Default log handler.
Definition logger.h:387
virtual void write(const std::string &message, const LogLevel level) override
Write the log to stdout.
Handles log messages.
Definition logger.h:336
bool write_file
Indicate to the handler that the message should be written in a file.
Definition logger.h:370
bool write_stdout
Indicate to the handler that the message should be sent to stdout / stderr.
Definition logger.h:365
Logger * _logger
Logger instance bound to this handler.
Definition logger.h:376
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:355
virtual void write(const std::string &message, const LogLevel level)=0
Do actions when the logger need to write a message.
Add stream capabilities logs, letting you do calls like oe::log << any_variable
Definition logger.h:57
LoggerStream(LoggerStream &&other) noexcept
Move constructor.
~LoggerStream()
Destructor.
LoggerStream & operator<<(T const &data)
Stream chaining operator.
Definition logger.h:84
LoggerStream & operator=(LoggerStream &&other) noexcept
Move operator.
Log messages.
Definition logger.h:110
LogHandler * getHandler()
Get underlying log handler.
Definition logger.h:303
LoggerStream debug(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log debugs.
Definition logger.h:163
LogLevel minimum_level
Log level below this one won't be sent.
Definition logger.h:127
std::string name
Logger name to display (also used as file name if log are recorded)
Definition logger.h:120
LoggerStream warn(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log warnings.
Definition logger.h:185
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:220
LoggerStream trace(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log traces.
Definition logger.h:152
LoggerStream operator<<(T const &data)
Log a message using streams.
Definition logger.h:278
LoggerStream error(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log errors.
Definition logger.h:196
Logger & setDefaultLevel(const LogLevel default_level)
Set log level used when using log << gabuzomeu or log(gabuzomeu)
Definition logger.h:231
LoggerStream info(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to log informations.
Definition logger.h:174
Logger & setDefaultVerbosity(const LogVerbosity verbosity)
Set default log verbosity used when using log << gabuzomeu or log(gabuzomeu)
Definition logger.h:242
void log(const std::ostringstream &stream, const LogLevel level=default_log_level, const LogVerbosity verbosity=default_log_verbosity)
Log a stringstream message.
static Logger & getGlobalInstance()
Get the default global log instance.
Definition logger.h:140
LogVerbosity verbosity
Verbosity flags, used to filter logs.
Definition logger.h:133
LoggerStream critical(const LogVerbosity verbosity=default_log_verbosity)
Prepare and return a logger stream to receive criticals logs.
Definition logger.h:207
void setHandler(std::unique_ptr< LogHandler > handler)
Set underlying log handler.
void operator()(fmt::format_string< Args... > format, Args &&... args)
Log a formatted message using default level/verbosity.
Definition logger.h:265
Prevent class to be copied.
Definition non_copyable.h:12
Core functionality (windows, event handler, logger, ...)
Definition cursor.h:8
LogLevel
Severity of the log.
Definition logger.h:23
constexpr LogLevel default_log_level
Default log level when no level is supplied to log functions.
Definition logger.h:37
uint64_t LogVerbosity
Log verbosity serves as a filter below the LogLevel.
Definition logger.h:44
constexpr uint64_t default_log_verbosity
Default log verbosity.
Definition logger.h:49
Oxygen Engine common namespace.
Definition cursor.h:8