|
9 | 9 | #include <utility> |
10 | 10 | #include <tuple> |
11 | 11 |
|
12 | | -#include <boost/phoenix.hpp> |
13 | 12 | #include <boost/program_options.hpp> |
14 | 13 | #include <boost/program_options/parsers.hpp> |
15 | 14 | #include <boost/property_tree/ptree.hpp> |
|
21 | 20 | #include <boost/log/utility/setup/common_attributes.hpp> |
22 | 21 | #include <boost/log/expressions.hpp> |
23 | 22 | #include <boost/uuid/uuid.hpp> |
| 23 | +#include <boost/log/support/date_time.hpp> |
24 | 24 |
|
25 | 25 | #include <boost/lexical_cast.hpp> |
26 | 26 | #include <boost/regex.hpp> |
@@ -99,41 +99,52 @@ void log_formatter(boost::log::formatting_ostream& strm, boost::log::record_view |
99 | 99 | " " << rec["Message"].extract<std::string>(); |
100 | 100 | } |
101 | 101 |
|
102 | | -void set_logging_filter(std::uint16_t level_numeric) |
| 102 | +void init_logging(std::uint16_t &logging_level) |
103 | 103 | { |
104 | | - level_numeric = level_numeric > 6 ? 6 : level_numeric; |
| 104 | + boost::log::add_common_attributes(); |
| 105 | + logging_level = logging_level > 6 ? 6 : logging_level; |
105 | 106 |
|
106 | | - switch (level_numeric) |
| 107 | + switch (logging_level) |
107 | 108 | { |
108 | | - case 6: |
109 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::trace); |
110 | | - break; |
111 | | - case 5: |
112 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::debug); |
113 | | - break; |
114 | | - case 4: |
115 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::info); |
116 | | - break; |
117 | | - case 3: |
118 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::warning); |
119 | | - break; |
120 | | - case 2: |
121 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::error); |
122 | | - break; |
123 | | - case 1: |
124 | | - boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::fatal); |
125 | | - break; |
126 | | - case 0: |
127 | | - boost::log::core::get()->set_logging_enabled(false); |
128 | | - break; |
| 109 | + case 6: |
| 110 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::trace); |
| 111 | + break; |
| 112 | + case 5: |
| 113 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::debug); |
| 114 | + break; |
| 115 | + case 4: |
| 116 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::info); |
| 117 | + break; |
| 118 | + case 3: |
| 119 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::warning); |
| 120 | + break; |
| 121 | + case 2: |
| 122 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::error); |
| 123 | + break; |
| 124 | + case 1: |
| 125 | + boost::log::core::get()->set_filter(boost::log::trivial::severity >= boost::log::trivial::fatal); |
| 126 | + break; |
| 127 | + case 0: |
| 128 | + boost::log::core::get()->set_logging_enabled(false); |
| 129 | + break; |
129 | 130 | } |
130 | | -} |
131 | 131 |
|
132 | | -void init_logging(std::uint16_t &logging_level) |
133 | | -{ |
134 | | - boost::log::add_common_attributes(); |
135 | | - boost::log::add_console_log(std::cout, boost::log::keywords::format = boost::phoenix::bind(&log_formatter, boost::log::expressions::stream, boost::log::expressions::record)); |
136 | | - set_logging_filter(logging_level); |
| 132 | + /* log formatter: |
| 133 | + * [TimeStamp] [ThreadId] [Severity Level] [Scope] Log message |
| 134 | + */ |
| 135 | + auto fmtTimeStamp = boost::log::expressions:: |
| 136 | + format_date_time<boost::posix_time::ptime>("TimeStamp", "%Y-%m-%d %H:%M:%S.%f"); |
| 137 | + auto fmtThreadId = boost::log::expressions:: |
| 138 | + attr<boost::log::attributes::current_thread_id::value_type>("ThreadID"); |
| 139 | + auto fmtSeverity = boost::log::expressions:: |
| 140 | + attr<boost::log::trivial::severity_level>("Severity"); |
| 141 | + boost::log::formatter logFmt = |
| 142 | + boost::log::expressions::format("[%1%] (%2%) [%3%] %4%") |
| 143 | + % fmtTimeStamp % fmtThreadId % fmtSeverity % boost::log::expressions::smessage; |
| 144 | + |
| 145 | + auto consoleSink = boost::log::add_console_log(std::clog); |
| 146 | + consoleSink->set_formatter(logFmt); |
| 147 | + |
137 | 148 | } |
138 | 149 |
|
139 | 150 | bool process_cli(int argc, char ** argv, LocalproxyConfig &cfg, ptree &settings, std::uint16_t &logging_level) |
@@ -400,7 +411,6 @@ int main(int argc, char ** argv) |
400 | 411 |
|
401 | 412 | if (process_cli(argc, argv, cfg, settings, logging_level)) |
402 | 413 | { |
403 | | - set_logging_filter(logging_level); |
404 | 414 | tcp_adapter_proxy proxy{ settings, cfg }; |
405 | 415 | return proxy.run_proxy(); |
406 | 416 | } |
|
0 commit comments