Boost logo

Boost :

Subject: [boost] [log] init_from_settings - problem with applying format and filter
From: Petrovskiy Yuriy (yuriy.petrovskiy_at_[hidden])
Date: 2011-07-04 07:47:20

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
I have the following code (most of it is copied from boost::log

/* 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 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;


LOG(info) << "!!!Hello World!!!";
LOG(warning) << "NO TimeStamp and Severity";
LOG(error) << "NO output if Filter is set ";
return 0;

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:
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
3 [2011-Jul-04 12:14:06.339750] [0x73d190] [error] NO output if Filter is
( 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
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

Thank you in advance.
Yuriy Petrovskiy

Boost list run by bdawes at, gregod at, cpdaniel at, john at