Chrysalis - Logging
Loading...
Searching...
No Matches
Logger.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_LOGGER_H
2#define CHRYSALIS_LOGGER_H
3
4#include <spdlog/spdlog.h>
5#include <spdlog/sinks/basic_file_sink.h>
6
7#include "LoggerFormatter.h"
11
12namespace Logging {
13 class LOGGING Logger {
14 friend class LoggerRegistry;
15 explicit Logger(const std::string& loggingDirectory, const char* name);
16 public:
17 constexpr static short LOGGER_NAME_LENGTH = 20;
18
19 const char* getName() const;
20
21 spdlog::level::level_enum getLevel() const;
22 void setLevel(spdlog::level::level_enum level);
23
24 void flush() const;
25 void addSink(const std::shared_ptr<spdlog::sinks::sink>& sink);
26
27 template<typename... Args>
28 void log(spdlog::level::level_enum lvl, spdlog::format_string_t<Args...> fmt, Args &&... args) {
29 logger_.log(lvl, fmt, std::forward<Args>(args)...);
30 }
31
32 template<typename... Args>
33 void trace(spdlog::format_string_t<Args...> fmt, Args &&... args) {
34 log(spdlog::level::trace, fmt, std::forward<Args>(args)...);
35 }
36
37 template<typename... Args>
38 void debug(spdlog::format_string_t<Args...> fmt, Args &&... args) {
39 log(spdlog::level::debug, fmt, std::forward<Args>(args)...);
40 }
41
42 template<typename... Args>
43 void info(spdlog::format_string_t<Args...> fmt, Args &&... args) {
44 log(spdlog::level::info, fmt, std::forward<Args>(args)...);
45 }
46
47 template<typename... Args>
48 void warn(spdlog::format_string_t<Args...> fmt, Args &&... args) {
49 log(spdlog::level::warn, fmt, std::forward<Args>(args)...);
50 }
51
52 template<typename... Args>
53 void error(spdlog::format_string_t<Args...> fmt, Args &&... args) {
54 log(spdlog::level::err, fmt, std::forward<Args>(args)...);
55 }
56
57 template<typename... Args>
58 void critical(spdlog::format_string_t<Args...> fmt, Args &&... args) {
59 log(spdlog::level::critical, fmt, std::forward<Args>(args)...);
60 spdlog::shutdown();
61 exit(1);
62 }
63
64 private:
65 template<typename Mutex>
66 static std::shared_ptr<spdlog::sinks::basic_file_sink<Mutex>> createFileSink(const std::string& loggingDirectory, const std::string& name) {
67 const auto sink = std::make_shared<spdlog::sinks::basic_file_sink<Mutex>>(loggingDirectory + "/" + name + ".log", true);
69 return sink;
70 }
71
72 void setLoggingDirectory(const std::string& loggingDirectory);
73 void setCommonFileSink(const std::shared_ptr<spdlog::sinks::basic_file_sink_mt>& sink);
74
75 const char* name_;
76
77 spdlog::logger logger_;
78 std::shared_ptr<spdlog::sinks::basic_file_sink_mt> fileSink_;
79 };
80}
81
82#endif //CHRYSALIS_LOGGER_H
#define LOGGING
Definition LoggingLibraryExport.h:11
static void apply(const std::shared_ptr< spdlog::sinks::sink > &sink)
Definition LoggerFormatter.h:11
void log(spdlog::level::level_enum lvl, spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:28
void error(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:53
void critical(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:58
spdlog::level::level_enum getLevel() const
Definition Logger.cpp:31
const char * getName() const
Definition Logger.cpp:27
void addSink(const std::shared_ptr< spdlog::sinks::sink > &sink)
Definition Logger.cpp:23
void flush() const
Definition Logger.cpp:19
friend class LoggerRegistry
Definition Logger.h:14
void info(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:43
void setLevel(spdlog::level::level_enum level)
Definition Logger.cpp:35
void warn(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:48
void trace(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:33
static constexpr short LOGGER_NAME_LENGTH
Definition Logger.h:17
void debug(spdlog::format_string_t< Args... > fmt, Args &&... args)
Definition Logger.h:38
Definition BaseConsoleUser.h:4