BioCMAMC-ST
logger.hpp
1#ifndef __COMMON_LOGGER_HPP__
2#define __COMMON_LOGGER_HPP__
3
4
5#include <source_location>
6#include <string_view>
7#include <string>
8
9namespace IO
10{
11
12 namespace AnsiCode
13 {
14 constexpr auto blue = "\033[34m";
15 constexpr auto red = "\033[31m";
16 constexpr auto reset = "\033[0m";
17 constexpr auto green = "\033[32m";
18 } // namespace AnsiCode
19
20 namespace Unicode
21 {
22 constexpr auto red_circle = "\U0001F534";
23 } // namespace Unicode
24
25
26
27 class Logger
28 {
29 public:
30 Logger() = default;
31
32 Logger(const Logger&) = default;
33 Logger(Logger&&) = default;
34
35 Logger& operator=(const Logger&) = default;
36 Logger& operator=(Logger&&) = default;
37
38 virtual ~Logger() = default;
39
40 virtual void debug(std::string_view message) = 0;
41
42 virtual void print(std::string_view prefix, std::string_view message) = 0;
43
44 virtual void alert(std::string_view prefix,std::string_view message) = 0;
45
46 virtual void error(std::string_view message,std::source_location location =std::source_location::current()) = 0;
47
48 virtual void raw_log(std::string_view message) =0;
49
50 virtual void toggle_debug() = 0;
51
52 virtual void toggle_print() = 0;
53
54 virtual void toggle_alert() = 0;
55
56 virtual void toggle_error() = 0;
57
58 virtual void toggle_all() = 0;
59 };
60
61 template <typename... MsgType> std::string format(MsgType&&... msgs)
62 {
63 std::string result;
64 (result += ... += std::forward<MsgType>(msgs));
65 return result;
66 }
67
68
69
70
71
72} // namespace IO
73
74#endif
virtual void error(std::string_view message, std::source_location location=std::source_location::current())=0
Logger & operator=(const Logger &)=default
virtual void raw_log(std::string_view message)=0
virtual void toggle_debug()=0
virtual void toggle_alert()=0
virtual void debug(std::string_view message)=0
Logger(const Logger &)=default
virtual ~Logger()=default
virtual void alert(std::string_view prefix, std::string_view message)=0
Logger()=default
Logger & operator=(Logger &&)=default
virtual void print(std::string_view prefix, std::string_view message)=0
virtual void toggle_all()=0
virtual void toggle_print()=0
Logger(Logger &&)=default
virtual void toggle_error()=0
Definition logger.hpp:13
constexpr auto red
Definition logger.hpp:15
constexpr auto green
Definition logger.hpp:17
constexpr auto reset
Definition logger.hpp:16
constexpr auto blue
Definition logger.hpp:14
Definition logger.hpp:21
constexpr auto red_circle
Definition logger.hpp:22
Definition impl_post_process.hpp:12
std::string format(MsgType &&... msgs)
Definition logger.hpp:61