Code forensics
0.1
Generate historical information about code changes
|
Go to the documentation of this file.
4 #include <unordered_set>
8 #include <boost/log/trivial.hpp>
9 #include <boost/log/common.hpp>
10 #include <boost/log/expressions.hpp>
11 #include <boost/log/attributes.hpp>
12 #include <boost/log/sinks.hpp>
13 #include <boost/log/sources/logger.hpp>
14 #include <boost/log/utility/record_ordering.hpp>
15 #include <boost/core/null_deleter.hpp>
20 #include <shared_mutex>
22 #include <indicators/progress_bar.hpp>
23 #include <indicators/block_progress_bar.hpp>
24 #include <indicators/cursor_control.hpp>
26 indicators::BlockProgressBar
init_progress(
int max,
int width = 60);
28 using BarText = indicators::option::PostfixText;
32 indicators::BlockProgressBar& bar,
42 namespace expr = logging::expressions;
43 namespace attrs = logging::attributes;
47 namespace sc = std::chrono;
52 indicators::BlockProgressBar
bar;
56 sc::high_resolution_clock::time_point
start;
72 logging::core::get()->flush();
74 if (
timed) {
start = sc::high_resolution_clock::now(); }
86 diff = sc::high_resolution_clock::now() -
start;
88 " {:1.4f}/{:4.2f}/{:4.2f}",
99 using Logger = logging::sources::severity_logger<
100 logging::trivial::severity_level>;
111 #define CUSTOM_LOG(logger, sev) \
112 set_get_attrib("File", Str{__FILE__}); \
113 set_get_attrib("Line", __LINE__); \
114 set_get_attrib("Func", Str{__PRETTY_FUNCTION__}); \
115 BOOST_LOG_SEV(logger, sev)
121 template <
typename T>
122 using MutLog = logging::attrs::mutable_constant<T, std::shared_mutex>;
130 template <
typename ValueType>
132 auto attr = logging::attribute_cast<MutLog<ValueType>>(
133 logging::core::get()->get_global_attributes()[name]);
139 return *(state->logger);
143 return *(state->logger);
148 #define LOG_T(state) \
149 CUSTOM_LOG((get_logger(state)), logging::severity::trace)
150 #define LOG_D(state) \
151 CUSTOM_LOG((get_logger(state)), logging::severity::debug)
152 #define LOG_I(state) \
153 CUSTOM_LOG((get_logger(state)), logging::severity::info)
154 #define LOG_W(state) \
155 CUSTOM_LOG((get_logger(state)), logging::severity::warning)
156 #define LOG_E(state) \
157 CUSTOM_LOG((get_logger(state)), logging::severity::error)
158 #define LOG_F(state) \
159 CUSTOM_LOG((get_logger(state)), logging::severity::fatal)
163 using sink_t = logging::sinks::asynchronous_sink<
165 logging::sinks::unbounded_ordering_queue<
166 logging::attribute_value_ordering<
168 std::less<unsigned int>>>>;
170 BOOST_LOG_ATTRIBUTE_KEYWORD(
173 logging::trivial::severity_level)
176 logging::record_view
const& rec,
177 logging::formatting_ostream& strm);
182 logging::record_view
const& rec,
183 logging::formatting_ostream& strm);
191 #endif // LOGGING_HPP
void tick()
Definition: logging.hpp:81
void out_formatter(logging::record_view const &rec, logging::formatting_ostream &strm)
void log_formatter(const boost::log::record_view &rec, boost::log::formatting_ostream &strm)
Definition: logging.cpp:23
indicators::option::PostfixText BarText
Definition: logging.hpp:28
logging::trivial::severity_level severity
Definition: logging.hpp:106
logging::sinks::text_ostream_backend backend_t
Definition: logging.hpp:162
auto get_logger(walker_state *state) -> Logger &
Definition: logging.hpp:138
ScopedBar(walker_state *_state, int _max, CR< Str > _annotation, bool _timed=true, int _width=40)
Definition: logging.hpp:59
Definition: logging.hpp:49
sc::high_resolution_clock::time_point start
Definition: logging.hpp:56
Definition: logging.hpp:41
bool timed
Definition: logging.hpp:55
int max
Definition: logging.hpp:51
logging::attrs::mutable_constant< T, std::shared_mutex > MutLog
Definition: logging.hpp:122
Str annotation
Definition: logging.hpp:53
indicators::BlockProgressBar init_progress(int max, int width=60)
Definition: logging.cpp:5
CP< walker_config > config
Definition: program_state.hpp:200
int count
Definition: logging.hpp:50
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", logging::trivial::severity_level) void log_formatter(logging Pair< char, fmt::text_style > format_style(logging::severity level)
Definition: logging.cpp:41
void init_logger_properties()
Definition: logging.cpp:109
boost::shared_ptr< sink_t > create_file_sink(CR< Str > outfile)
Definition: logging.cpp:72
Mutable state passed around walker configurations.
Definition: program_state.hpp:199
auto set_get_attrib(const char *name, ValueType value) -> ValueType
Definition: logging.hpp:131
indicators::BlockProgressBar bar
Definition: logging.hpp:52
walker_state * state
Definition: logging.hpp:54
logging::sources::severity_logger< logging::trivial::severity_level > Logger
Definition: logging.hpp:100
logging::sinks::asynchronous_sink< backend_t, logging::sinks::unbounded_ordering_queue< logging::attribute_value_ordering< unsigned int, std::less< unsigned int > >> > sink_t
Definition: logging.hpp:168
~ScopedBar()
Definition: logging.hpp:77
boost::shared_ptr< sink_t > create_std_sink()
Definition: logging.cpp:92
Main code analysis state and configuration classes.
void tick_next(indicators::BlockProgressBar &bar, int &count, int max, CR< Str > name, CR< Str > extra="")