9 #define BOOST_LOG_DYN_LINK 10 #include <boost/date_time/posix_time/posix_time_types.hpp> 12 #if BOOST_VERSION < 105700 13 #pragma clang diagnostic push 14 #pragma clang diagnostic ignored "-Wdeprecated-register" 17 #pragma clang diagnostic push 18 #pragma clang diagnostic ignored "-Wunused-local-typedef" 19 #include <boost/log/expressions.hpp> 20 #include <boost/log/support/date_time.hpp> 21 #pragma clang diagnostic pop 23 #include <boost/log/attributes/current_process_id.hpp> 24 #include <boost/log/attributes/current_process_name.hpp> 25 #include <boost/log/attributes/current_thread_id.hpp> 26 #include <boost/log/sources/global_logger_storage.hpp> 27 #include <boost/log/sources/logger.hpp> 28 #include <boost/log/sources/record_ostream.hpp> 29 #include <boost/log/sources/severity_logger.hpp> 30 #include <boost/log/utility/setup/common_attributes.hpp> 31 #include <boost/log/utility/setup/console.hpp> 32 #include <boost/log/utility/setup/file.hpp> 33 #if BOOST_VERSION < 105700 34 #pragma clang diagnostic pop 51 #if BOOST_VERSION == 105900 52 #define LOG(severity) BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), severity) << "" 54 #define LOG(severity) BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), severity) 58 #define P_H BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::proto_high) 59 #define P_M BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::proto_mid) 60 #define P_L BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::proto_low) 61 #define DBG BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::debug) 62 #define INF BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::info) 63 #define WRN BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::warning) 64 #define ERR BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::error) 65 #define FAT BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::fatal) 66 #define STDOUT BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::log_stdout) 67 #define STDOUT_CLEAN BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::log_stdout_clean) 68 #define STDERR BOOST_LOG_SEV(MiscCommon::Logger::instance().logger(), MiscCommon::log_stderr) 77 typedef boost::log::sources::severity_logger_mt<ELogSeverityLevel> logger_t;
80 static Logger& instance()
82 static Logger instance;
94 static bool bStarted =
false;
100 using namespace boost::log;
105 std::string sLogFile = userDefaults.
getLogFile();
112 boost::log::formatter formatter =
114 expressions::stream << std::left << expressions::format_date_time<boost::posix_time::ptime>(
115 "TimeStamp",
"%Y-%m-%d %H:%M:%S.%f")
116 <<
" " << std::setw(7) << expressions::attr<ELogSeverityLevel>(
"Severity")
117 << std::setw(20) << expressions::attr<std::string>(
"Process") <<
" <" 118 << expressions::attr<attributes::current_process_id::value_type>(
"ProcessID") <<
":" 119 << expressions::attr<attributes::current_thread_id::value_type>(
"ThreadID")
120 <<
"> " << expressions::smessage;
123 boost::shared_ptr<sinks::synchronous_sink<sinks::text_file_backend>> fileSink =
124 add_file_log(keywords::file_name = sLogFile,
125 keywords::open_mode = (std::ios::out | std::ios::app),
126 keywords::rotation_size = rotationSize * 1024 * 1024,
128 keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0),
132 keywords::max_size = 1000 * 1024 * 1024,
133 keywords::min_free_space = 2000 * 1024 * 1024,
134 keywords::auto_flush =
true);
136 fileSink->set_formatter(formatter);
137 fileSink->set_filter(severity >= severityLevel);
140 boost::shared_ptr<sinks::synchronous_sink<sinks::text_ostream_backend>> consoleSTDOUTSink =
141 add_console_log(std::cout, boost::log::keywords::format =
"%Process%: %Message%");
142 boost::shared_ptr<sinks::synchronous_sink<sinks::text_ostream_backend>> consoleSTDOUTCleanSink =
143 add_console_log(std::cout, boost::log::keywords::format =
"%Message%");
144 boost::shared_ptr<sinks::synchronous_sink<sinks::text_ostream_backend>> consoleSTDERRSink =
145 add_console_log(std::cerr, boost::log::keywords::format =
"%Process%: error: %Message%");
147 consoleSTDOUTSink->set_filter(severity ==
log_stdout && hasConsoleOutput);
148 consoleSTDOUTCleanSink->set_filter(severity ==
log_stdout_clean && hasConsoleOutput);
149 consoleSTDERRSink->set_filter(severity ==
log_stderr && hasConsoleOutput);
151 add_common_attributes();
152 core::get()->add_global_attribute(
"Process", attributes::current_process_name());
154 LOG(
info) <<
"Log engine is initialized with severety \""
ELogSeverityLevel
Log Severity levels.
Definition: def.h:144
std::string getLogFile() const
Definition: UserDefaults.cpp:287
const SDDSUserDefaultsOptions_t getOptions() const
Definition: UserDefaults.cpp:190
#define LOG(severity)
Definition: Logger.h:54
unsigned int m_logRotationSize
True if output log also to console.
Definition: dds-user-defaults/src/Options.h:30
bool m_logHasConsoleOutput
Idle time in [s] after which process will be killed by monitoring thread.
Definition: dds-user-defaults/src/Options.h:32
Definition: UserDefaults.h:18
static CUserDefaults & instance()
Return singleton instance.
Definition: UserDefaults.cpp:40
MiscCommon::ELogSeverityLevel m_logSeverityLevel
Log rotation size in MB.
Definition: dds-user-defaults/src/Options.h:28
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", ELogSeverityLevel) class Logger
Definition: Logger.h:72
SDDSServerOptions m_server
Definition: dds-user-defaults/src/Options.h:40
Miscellaneous functions and helpers are located here.
Definition: BOOST_FILESYSTEM.h:21