
I am trying to use boost::log for tracking application activity. I need message with severity level output to console and more detailed output to file. I have the following code (most of it is copied from boost::log documentation): /* boostLogTest.cpp */ #include <boost/log/sources/severity_logger.hpp> #include <boost/log/sources/record_ostream.hpp> #include <boost/log/utility/init/from_settings.hpp> using namespace boost::log; enum logMessageSeverityLevels { trace = 0 , debug = 1, info = 2, warning = 3, error = 4, fatal = 5 }; #define LOG(x) BOOST_LOG_SEV(logger, x ) typedef boost::log::sources::severity_logger< logMessageSeverityLevels > loggerType; loggerType logger(keywords::severity = error); int main() { boost::log::settings setts; //setts["Core"]["Filter"] = "%Severity% >= 0"; //if set - no output anywhere setts["Core"]["DisableLogging"] = false; setts["Sink:Console"]["Destination"] = "Console"; setts["Sink:Console"]["Filter"] = "%Severity% >= 3"; // no output to console in result setts["Sink:Console"]["Format"] = "[%Severity%] %_%"; setts["Sink:Console"]["AutoFlush"] = true; setts["Sink:File"]["Destination"] = "TextFile"; setts["Sink:File"]["FileName"] = "test_%3N.log"; setts["Sink:File"]["Format"] = "[%TimeStamp%] <%Severity%> %_%"; setts["Sink:File"]["AutoFlush"] = true; boost::log::init_from_settings(setts); LOG(info) << "!!!Hello World!!!"; LOG(warning) << "NO TimeStamp and Severity"; LOG(error) << "NO output if Filter is set "; return 0; } result: no output to console file (test_000.log) is being rewritten on each run: [] ** !!!Hello World!!! [] ** NO date [] ** NO severity [] ** NO output if Filter is set if I add #include <boost/log/trivial.hpp> and replace LOG definition with #define LOG(x) BOOST_LOG_TRIVIAL( x ) I get also no console output but TWO! logs: (boostLogTest.log) 1 [2011-Jul-04 12:14:06.331749] [0x73d190] [info] !!!Hello World!!! 2 [2011-Jul-04 12:14:06.338750] [0x73d190] [warning] NO TimeStamp and Severity 3 [2011-Jul-04 12:14:06.339750] [0x73d190] [error] NO output if Filter is set .... ( test_000.log ) [2011-Jul-04 12:14:06.331749] ** !!!Hello World!!! [2011-Jul-04 12:14:06.338750] ** NO TimeStamp and Severity [2011-Jul-04 12:14:06.339750] ** NO output if Filter is set Built with: g++ -Ipath\to\boost -O0 -g3 -Wall -c -fmessage-length=0 -osrc\boostLogTest.o ..\src\boostLogTest.cpp g++ -Lpath\to\boost\libs -oboostLogTest.exe src\boostLogTest.o -lboost_log-mgw45-mt-d-1_46_1 -lboost_log_setup-mgw45-mt-d-1_46_1 Environment: Windows 7 x64 / MinGW (gcc 4.5) / Eclipse Boost version 1.46.1 Boost log from https://boost-log.svn.sourceforge.net/svnroot/boost-log/trunk/boost-logRevis... 603 Boost built with the same toolset. The questions are: - How to configure severity_logger using init_from_settings() to get the custom severity levels in the log? - Why "Format" variables do not work? (and why %TimeStamp% starts to work if using BOOST_LOG_TRIVIAL for output)? - What should be done to make logger append to log (not overwrite)? - Is it possible to log file and line using format variables (only to file)? I had explored boost::log documentation but had not found answers for these questions. Thank you in advance. Yuriy Petrovskiy