Finished creating simple console/file logger

This commit is contained in:
2016-07-02 17:27:15 +01:00
parent 47b8a71d24
commit cabcad57b4
3 changed files with 36 additions and 17 deletions
+11 -3
View File
@@ -17,9 +17,17 @@ class Logger {
void fatal(std::string str);
private:
static void formatter(boost::log::record_view const& rec, boost::log::formatting_ostream& strm);
typedef boost::log::sinks::asynchronous_sink<boost::log::sinks::text_ostream_backend> text_sink;
static void log_formatter(boost::log::record_view const& rec, boost::log::formatting_ostream& strm);
// Define types for logging backends
typedef boost::log::sinks::asynchronous_sink<boost::log::sinks::text_ostream_backend> console_backend;
typedef boost::log::sinks::asynchronous_sink<boost::log::sinks::text_file_backend> file_backend;
// Define a sink for console output and for log file output
boost::shared_ptr<console_backend> console_sink;
boost::shared_ptr<file_backend> file_sink;
//Define a logger
boost::log::sources::severity_logger< boost::log::trivial::severity_level > lg;
boost::shared_ptr<text_sink> sink;
};
-1
View File
@@ -11,6 +11,5 @@ int main(int argc, char** argv) {
ArgumentParser argparse = ArgumentParser();
argparse.parseargs(argc, argv);
log.error("My pretty little error!");
cout << "Hello world!" << endl;
return 0;
}
+25 -13
View File
@@ -20,15 +20,21 @@ namespace src = boost::log::sources;
namespace expr = boost::log::expressions;
namespace keywords = boost::log::keywords;
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", int)
//BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", int)
Logger::Logger() {
boost::log::register_simple_formatter_factory< boost::log::trivial::severity_level, char >("Severity");
Logger::sink = boost::make_shared<text_sink>();
Logger::console_sink = boost::make_shared<console_backend>();
Logger::sink->set_formatter
(
Logger::file_sink =
boost::make_shared<file_backend>(
keywords::file_name = "concatenator_log_%N.log",
keywords::rotation_size = 5 * 1024 * 1024
);
Logger::file_sink->set_formatter(
expr::stream <<
"[" <<
expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S") <<
@@ -38,14 +44,26 @@ Logger::Logger() {
expr::smessage
);
Logger::console_sink->set_formatter(
expr::stream <<
"[" <<
expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S") <<
"] [" <<
logging::trivial::severity <<
"] --- " <<
expr::smessage
);
boost::shared_ptr<std::ostream> stdout_stream{&std::clog, boost::null_deleter{}};
Logger::sink->locked_backend()->add_stream(stdout_stream);
Logger::sink->locked_backend()->add_stream(boost::make_shared< std::ofstream >("sample.log"));
Logger::console_sink->locked_backend()->add_stream(stdout_stream);
Logger::console_sink->locked_backend()->auto_flush(true);
Logger::file_sink->locked_backend()->auto_flush(true);
//Logger::sink->set_filter(severity > 0);
logging::core::get()->add_sink(Logger::sink);
logging::core::get()->add_sink(Logger::file_sink);
logging::core::get()->add_sink(Logger::console_sink);
logging::add_common_attributes();
@@ -53,30 +71,24 @@ Logger::Logger() {
void Logger::trace(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::trace) << str;
Logger::sink->flush();
}
void Logger::debug(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::debug) << str;
Logger::sink->flush();
}
void Logger::info(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::info) << str;
Logger::sink->flush();
}
void Logger::warning(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::warning) << str;
Logger::sink->flush();
}
void Logger::error(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::error) << str;
Logger::sink->flush();
}
void Logger::fatal(std::string str) {
BOOST_LOG_SEV(lg, logging::trivial::fatal) << str;
Logger::sink->flush();
}