TARAXA
logger_config.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <boost/log/sinks/text_ostream_backend.hpp>
4 #include <boost/log/sources/record_ostream.hpp>
5 #include <boost/log/utility/setup/file.hpp>
6 #include <filesystem>
7 #include <string>
8 
9 #include "common/types.hpp"
10 
11 namespace fs = std::filesystem;
12 
13 namespace taraxa::logger {
14 
15 // Logger verbosity
16 // this enum must match enum in aleth logs to correctly support aleth's library
17 enum Verbosity {
18  Silent = -1,
19  Error = 0,
20  Warning = 1,
21  Info = 2,
22  Debug = 3,
23  Trace = 4,
24 };
25 
32 Verbosity stringToVerbosity(std::string _verbosity);
33 
34 class Config {
35  public:
36  template <class T>
37  using log_sink = boost::log::sinks::synchronous_sink<T>;
38 
39  struct OutputConfig {
40  OutputConfig() = default;
41 
42  std::string type = "console";
43  std::string target;
44  std::string file_name;
45  uint64_t rotation_size = 0;
46  std::string time_based_rotation;
47  std::string format = "%ThreadID% %ShortNodeId% %Channel% [%TimeStamp%] %SeverityStr%: %Message%";
48  uint64_t max_size = 0;
49  };
50  Config() = default;
51  Config(fs::path log_path);
52  ~Config();
53 
54  Config(const Config& other);
55  Config& operator=(const Config& other);
56  Config(Config&& other) noexcept;
57  Config& operator=(Config&& other) noexcept;
58 
62  void InitLogging(addr_t const& node);
63 
67  void DeinitLogging();
68 
69  std::string name = "default";
71  std::map<std::string, uint16_t> channels;
72  std::vector<OutputConfig> outputs;
73  std::vector<boost::shared_ptr<log_sink<boost::log::sinks::text_ostream_backend>>> console_sinks;
74  std::vector<boost::shared_ptr<log_sink<boost::log::sinks::text_file_backend>>> file_sinks;
75 
76  private:
77  bool logging_initialized_{false};
78 };
79 
80 } // namespace taraxa::logger
Definition: FixedHash.h:35
Definition: logger_config.hpp:34
boost::log::sinks::synchronous_sink< T > log_sink
Definition: logger_config.hpp:37
~Config()
Definition: logger_config.cpp:98
std::vector< OutputConfig > outputs
Definition: logger_config.hpp:72
Verbosity verbosity
Definition: logger_config.hpp:70
void DeinitLogging()
Deinit logging - removes created boost sinks.
Definition: logger_config.cpp:163
std::vector< boost::shared_ptr< log_sink< boost::log::sinks::text_ostream_backend > > > console_sinks
Definition: logger_config.hpp:73
void InitLogging(addr_t const &node)
Init logging - creates boost sinks according to the Config.
Definition: logger_config.cpp:104
std::map< std::string, uint16_t > channels
Definition: logger_config.hpp:71
bool logging_initialized_
Definition: logger_config.hpp:77
std::string name
Definition: logger_config.hpp:69
Config & operator=(const Config &other)
Definition: logger_config.cpp:54
std::vector< boost::shared_ptr< log_sink< boost::log::sinks::text_file_backend > > > file_sinks
Definition: logger_config.hpp:74
Verbosity
Definition: Log.h:44
Definition: logger.hpp:8
Verbosity stringToVerbosity(std::string _verbosity)
Transforms string verbosity to Verbosity enum.
Definition: logger_config.cpp:19
Verbosity
Definition: logger_config.hpp:17
@ Info
Definition: logger_config.hpp:21
@ Silent
Definition: logger_config.hpp:18
@ Debug
Definition: logger_config.hpp:22
@ Trace
Definition: logger_config.hpp:23
@ Warning
Definition: logger_config.hpp:20
@ Error
Definition: logger_config.hpp:19
Definition: logger_config.hpp:39
std::string type
Definition: logger_config.hpp:42
uint64_t rotation_size
Definition: logger_config.hpp:45
std::string time_based_rotation
Definition: logger_config.hpp:46
uint64_t max_size
Definition: logger_config.hpp:48
std::string file_name
Definition: logger_config.hpp:44
std::string format
Definition: logger_config.hpp:47
std::string target
Definition: logger_config.hpp:43