mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-16 01:51:45 +00:00
Enable new callback API
- OnData() channel data handler. - ConditionalRun() for devices without incoming data. - Header file with common main(), to be extended with getDevice/addCustomOptions. - Update examples (MQ/Tutorial3) to use the new API and config. - NewSimpleMessage() for simpler creation of small messages (additional copy). - Replace SetProperty/GetProperty with fConfig access. - Runtime configurable channel names for common devices. - Configurable logging interval per channel. - FairMQMultiplier for distributing same data to multiple outputs. - Cleanup state machine messages. - Cmd option to toggle signal handling. - Simpler API for send/receive timeouts. - Enable --log-to-file. - Fix coverity issues, warnings. - Various code cleanup and minor tweaks.
This commit is contained in:
@@ -33,7 +33,6 @@ namespace expr = boost::log::expressions;
|
||||
namespace sinks = boost::log::sinks;
|
||||
namespace attrs = boost::log::attributes;
|
||||
|
||||
|
||||
BOOST_LOG_GLOBAL_LOGGER_INIT(global_logger, src::severity_logger_mt)
|
||||
{
|
||||
src::severity_logger_mt<custom_severity_level> global_logger;
|
||||
@@ -42,141 +41,134 @@ BOOST_LOG_GLOBAL_LOGGER_INIT(global_logger, src::severity_logger_mt)
|
||||
return global_logger;
|
||||
}
|
||||
|
||||
namespace FairMQ
|
||||
{
|
||||
namespace Logger
|
||||
{
|
||||
std::vector<boost::shared_ptr<boost::log::sinks::basic_sink_frontend>> sinkList;// global var
|
||||
} // end Logger namespace
|
||||
} // end FairMQ namespace
|
||||
|
||||
|
||||
|
||||
namespace FairMQ{
|
||||
namespace Logger{
|
||||
std::vector<boost::shared_ptr< boost::log::sinks::basic_sink_frontend > >sinkList;// global var
|
||||
}}//end namespace
|
||||
|
||||
void RemoveRegisteredSinks()
|
||||
void RemoveRegisteredSinks()
|
||||
{
|
||||
if (FairMQ::Logger::sinkList.size() > 0)
|
||||
{
|
||||
if(FairMQ::Logger::sinkList.size() > 0)
|
||||
for (const auto& sink : FairMQ::Logger::sinkList)
|
||||
{
|
||||
for(const auto& sink : FairMQ::Logger::sinkList)
|
||||
logging::core::get()->remove_sink(sink);
|
||||
FairMQ::Logger::sinkList.clear();
|
||||
logging::core::get()->remove_sink(sink);
|
||||
}
|
||||
FairMQ::Logger::sinkList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
void reinit_logger(bool color, const std::string& filename, custom_severity_level threshold)
|
||||
{
|
||||
BOOST_LOG_SEV(global_logger::get(), custom_severity_level::NOLOG) << "";
|
||||
RemoveRegisteredSinks();
|
||||
DefaultConsoleInit(color);
|
||||
if (threshold != SEVERITY_NOLOG)
|
||||
{
|
||||
if (!filename.empty())
|
||||
{
|
||||
DefaultAddFileSink(filename, threshold);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// console sink related functions
|
||||
void DefaultConsoleInit(bool color/* = true*/)
|
||||
{
|
||||
// add a text sink
|
||||
typedef sinks::synchronous_sink<sinks::text_ostream_backend> text_sink;
|
||||
|
||||
void reinit_logger(bool color, const std::string& filename, custom_severity_level threshold)
|
||||
RemoveRegisteredSinks();
|
||||
|
||||
// CONSOLE - all severity except error
|
||||
boost::shared_ptr<text_sink> sink = boost::make_shared<text_sink>();
|
||||
// add "console" output stream to our sink
|
||||
sink->locked_backend()->add_stream(boost::shared_ptr<std::ostream>(&std::clog, empty_deleter_t()));
|
||||
|
||||
// specify the format of the log message
|
||||
if (color)
|
||||
{
|
||||
BOOST_LOG_SEV(global_logger::get(), custom_severity_level::NOLOG) << "";
|
||||
RemoveRegisteredSinks();
|
||||
DefaultConsoleInit(color);
|
||||
if(threshold!=SEVERITY_NOLOG)
|
||||
{
|
||||
if(!filename.empty())
|
||||
{
|
||||
DefaultAddFileSink(filename,threshold);
|
||||
}
|
||||
}
|
||||
|
||||
sink->set_formatter(&InitLogFormatter<tag_console>);
|
||||
}
|
||||
else
|
||||
{
|
||||
sink->set_formatter(&InitLogFormatter<tag_file>);
|
||||
}
|
||||
|
||||
// console sink related functions
|
||||
void DefaultConsoleInit(bool color/* = true*/)
|
||||
{
|
||||
// add a text sink
|
||||
typedef sinks::synchronous_sink<sinks::text_ostream_backend> text_sink;
|
||||
sink->set_filter(severity != SEVERITY_ERROR && severity < SEVERITY_NOLOG);
|
||||
// add sink to the core
|
||||
FairMQ::Logger::sinkList.push_back(sink);
|
||||
logging::core::get()->add_sink(sink);
|
||||
|
||||
RemoveRegisteredSinks();
|
||||
// CONSOLE - only severity error
|
||||
boost::shared_ptr<text_sink> sink_error = boost::make_shared<text_sink>();
|
||||
sink_error->locked_backend()->add_stream(boost::shared_ptr<std::ostream>(&std::cerr, empty_deleter_t()));
|
||||
|
||||
// CONSOLE - all severity except error
|
||||
boost::shared_ptr<text_sink> sink = boost::make_shared<text_sink>();
|
||||
// add "console" output stream to our sink
|
||||
sink->locked_backend()->add_stream(boost::shared_ptr<std::ostream>(&std::clog, empty_deleter_t()));
|
||||
if (color)
|
||||
{
|
||||
sink_error->set_formatter(&InitLogFormatter<tag_console>);
|
||||
}
|
||||
else
|
||||
{
|
||||
sink_error->set_formatter(&InitLogFormatter<tag_file>);
|
||||
}
|
||||
|
||||
// specify the format of the log message
|
||||
if (color)
|
||||
{
|
||||
sink->set_formatter(&InitLogFormatter<tag_console>);
|
||||
}
|
||||
else
|
||||
{
|
||||
sink->set_formatter(&InitLogFormatter<tag_file>);
|
||||
}
|
||||
sink_error->set_filter(severity == SEVERITY_ERROR);
|
||||
FairMQ::Logger::sinkList.push_back(sink_error);
|
||||
logging::core::get()->add_sink(sink_error);
|
||||
}
|
||||
|
||||
sink->set_filter(severity != SEVERITY_ERROR && severity < SEVERITY_NOLOG);
|
||||
// add sink to the core
|
||||
FairMQ::Logger::sinkList.push_back(sink);
|
||||
logging::core::get()->add_sink(sink);
|
||||
|
||||
// CONSOLE - only severity error
|
||||
boost::shared_ptr<text_sink> sink_error = boost::make_shared<text_sink>();
|
||||
sink_error->locked_backend()->add_stream(boost::shared_ptr<std::ostream>(&std::cerr, empty_deleter_t()));
|
||||
|
||||
if (color)
|
||||
{
|
||||
sink_error->set_formatter(&InitLogFormatter<tag_console>);
|
||||
}
|
||||
else
|
||||
{
|
||||
sink_error->set_formatter(&InitLogFormatter<tag_file>);
|
||||
}
|
||||
|
||||
sink_error->set_filter(severity == SEVERITY_ERROR);
|
||||
FairMQ::Logger::sinkList.push_back(sink_error);
|
||||
logging::core::get()->add_sink(sink_error);
|
||||
}
|
||||
|
||||
int DefaultConsoleSetFilter(custom_severity_level threshold)
|
||||
{
|
||||
|
||||
if(FairMQ::Logger::sinkList.size()>=2)
|
||||
{
|
||||
FairMQ::Logger::sinkList.at(0)->set_filter([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
auto mainConsoleSinkCondition = (sev != SEVERITY_ERROR) && (sev < SEVERITY_NOLOG);
|
||||
return mainConsoleSinkCondition && (sev>=threshold);
|
||||
});
|
||||
|
||||
FairMQ::Logger::sinkList.at(1)->set_filter([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
auto errorConsoleSinkCondition = sev == SEVERITY_ERROR;
|
||||
return errorConsoleSinkCondition && (sev>=threshold);
|
||||
});
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// file sink related functions
|
||||
|
||||
void DefaultAddFileSink(const std::string& filename, custom_severity_level threshold)
|
||||
int DefaultConsoleSetFilter(custom_severity_level threshold)
|
||||
{
|
||||
if (FairMQ::Logger::sinkList.size()>=2)
|
||||
{
|
||||
FairMQ::Logger::sinkList.at(0)->set_filter([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
// add a text sink
|
||||
std::string formatted_filename(filename);
|
||||
formatted_filename += "_%Y-%m-%d_%H-%M-%S.%N.log";
|
||||
AddFileSink([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
return (sev >= threshold) && (sev < SEVERITY_NOLOG);
|
||||
},
|
||||
boost::log::keywords::file_name = formatted_filename,
|
||||
boost::log::keywords::rotation_size = 10 * 1024 * 1024,
|
||||
// rotate at midnight every day
|
||||
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
|
||||
// log collector,
|
||||
// -- maximum total size of the stored log files is 1GB.
|
||||
// -- minimum free space on the drive is 2GB
|
||||
boost::log::keywords::max_size = 1000 * 1024 * 1024,
|
||||
boost::log::keywords::min_free_space = 2000 * 1024 * 1024,
|
||||
boost::log::keywords::auto_flush = true
|
||||
//keywords::time_based_rotation = &is_it_time_to_rotate
|
||||
);
|
||||
|
||||
}
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
auto mainConsoleSinkCondition = (sev != SEVERITY_ERROR) && (sev < SEVERITY_NOLOG);
|
||||
return mainConsoleSinkCondition && (sev>=threshold);
|
||||
});
|
||||
|
||||
|
||||
FairMQ::Logger::sinkList.at(1)->set_filter([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
auto errorConsoleSinkCondition = sev == SEVERITY_ERROR;
|
||||
return errorConsoleSinkCondition && (sev>=threshold);
|
||||
});
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// file sink related functions
|
||||
void DefaultAddFileSink(const std::string& filename, custom_severity_level threshold)
|
||||
{
|
||||
// add a text sink
|
||||
std::string formatted_filename(filename);
|
||||
formatted_filename += "_%Y-%m-%d_%H-%M-%S.%N.log";
|
||||
AddFileSink([threshold](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
return (sev >= threshold) && (sev < SEVERITY_NOLOG);
|
||||
},
|
||||
boost::log::keywords::file_name = formatted_filename,
|
||||
boost::log::keywords::rotation_size = 10 * 1024 * 1024,
|
||||
// rotate at midnight every day
|
||||
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
|
||||
// log collector,
|
||||
// -- maximum total size of the stored log files is 1GB.
|
||||
// -- minimum free space on the drive is 2GB
|
||||
boost::log::keywords::max_size = 1000 * 1024 * 1024,
|
||||
boost::log::keywords::min_free_space = 2000 * 1024 * 1024,
|
||||
boost::log::keywords::auto_flush = true
|
||||
//keywords::time_based_rotation = &is_it_time_to_rotate
|
||||
);
|
||||
}
|
||||
|
@@ -22,57 +22,61 @@
|
||||
#include <boost/log/utility/manipulators/to_log.hpp>
|
||||
#include <boost/log/sources/record_ostream.hpp>
|
||||
|
||||
namespace fairmq
|
||||
namespace FairMQ
|
||||
{
|
||||
enum severity_level
|
||||
{
|
||||
TRACE,
|
||||
DEBUG,
|
||||
RESULTS,
|
||||
INFO,
|
||||
WARN,
|
||||
ERROR,
|
||||
STATE,
|
||||
NOLOG
|
||||
};
|
||||
|
||||
static const std::array<std::string, 8> g_LogSeverityLevelString
|
||||
{
|
||||
{
|
||||
"TRACE",
|
||||
"DEBUG",
|
||||
"RESULTS",
|
||||
"INFO",
|
||||
"WARN",
|
||||
"ERROR",
|
||||
"STATE",
|
||||
"NOLOG"
|
||||
}
|
||||
};
|
||||
enum severity_level
|
||||
{
|
||||
TRACE,
|
||||
DEBUG,
|
||||
RESULTS,
|
||||
INFO,
|
||||
WARN,
|
||||
ERROR,
|
||||
STATE,
|
||||
NOLOG
|
||||
};
|
||||
|
||||
namespace color
|
||||
static const std::array<std::string, 8> g_LogSeverityLevelString
|
||||
{
|
||||
{
|
||||
enum code
|
||||
{
|
||||
FG_BLACK = 30,
|
||||
FG_RED = 31,
|
||||
FG_GREEN = 32,
|
||||
FG_YELLOW = 33,
|
||||
FG_BLUE = 34,
|
||||
FG_MAGENTA = 35,
|
||||
FG_CYAN = 36,
|
||||
FG_WHITE = 37,
|
||||
FG_DEFAULT = 39,
|
||||
BG_RED = 41,
|
||||
BG_GREEN = 42,
|
||||
BG_BLUE = 44,
|
||||
BG_DEFAULT = 49
|
||||
};
|
||||
"TRACE",
|
||||
"DEBUG",
|
||||
"RESULTS",
|
||||
"INFO",
|
||||
"WARN",
|
||||
"ERROR",
|
||||
"STATE",
|
||||
"NOLOG"
|
||||
}
|
||||
};
|
||||
|
||||
namespace Color
|
||||
{
|
||||
|
||||
enum code
|
||||
{
|
||||
FG_BLACK = 30,
|
||||
FG_RED = 31,
|
||||
FG_GREEN = 32,
|
||||
FG_YELLOW = 33,
|
||||
FG_BLUE = 34,
|
||||
FG_MAGENTA = 35,
|
||||
FG_CYAN = 36,
|
||||
FG_WHITE = 37,
|
||||
FG_DEFAULT = 39,
|
||||
BG_RED = 41,
|
||||
BG_GREEN = 42,
|
||||
BG_BLUE = 44,
|
||||
BG_DEFAULT = 49
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
} // FairMQ namespace
|
||||
|
||||
// helper function to format in color console output
|
||||
template <fairmq::color::code color>
|
||||
template <FairMQ::Color::code color>
|
||||
inline std::string write_in(const std::string& text_in_bold)
|
||||
{
|
||||
std::ostringstream os;
|
||||
@@ -82,8 +86,8 @@ inline std::string write_in(const std::string& text_in_bold)
|
||||
}
|
||||
|
||||
// typedef
|
||||
typedef fairmq::severity_level custom_severity_level;
|
||||
#define SEVERITY_THRESHOLD custom_severity_level::TRACE
|
||||
typedef FairMQ::severity_level custom_severity_level;
|
||||
#define SEVERITY_MINIMUM custom_severity_level::TRACE
|
||||
#define SEVERITY_ERROR custom_severity_level::ERROR
|
||||
#define SEVERITY_NOLOG custom_severity_level::NOLOG
|
||||
|
||||
@@ -100,41 +104,41 @@ inline boost::log::formatting_ostream& operator<<
|
||||
{
|
||||
custom_severity_level level = manip.get();
|
||||
std::size_t idx = static_cast<std::size_t>(level);
|
||||
if (idx < fairmq::g_LogSeverityLevelString.size())
|
||||
if (idx < FairMQ::g_LogSeverityLevelString.size())
|
||||
{
|
||||
// strm << " idx = " << idx << " ";
|
||||
switch (level)
|
||||
{
|
||||
case custom_severity_level::TRACE :
|
||||
strm << write_in<fairmq::color::FG_BLUE>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_BLUE>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::DEBUG :
|
||||
strm << write_in<fairmq::color::FG_BLUE>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_BLUE>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::RESULTS :
|
||||
strm << write_in<fairmq::color::FG_MAGENTA>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_MAGENTA>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::INFO :
|
||||
strm << write_in<fairmq::color::FG_GREEN>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_GREEN>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::WARN :
|
||||
strm << write_in<fairmq::color::FG_YELLOW>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_YELLOW>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::STATE :
|
||||
strm << write_in<fairmq::color::FG_MAGENTA>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_MAGENTA>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::ERROR :
|
||||
strm << write_in<fairmq::color::FG_RED>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_RED>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
case custom_severity_level::NOLOG :
|
||||
strm << write_in<fairmq::color::FG_DEFAULT>(fairmq::g_LogSeverityLevelString.at(idx));
|
||||
strm << write_in<FairMQ::Color::FG_DEFAULT>(FairMQ::g_LogSeverityLevelString.at(idx));
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -143,7 +147,7 @@ inline boost::log::formatting_ostream& operator<<
|
||||
}
|
||||
else
|
||||
{
|
||||
strm << write_in<fairmq::color::FG_RED>("Unknown log level ")
|
||||
strm << write_in<FairMQ::Color::FG_RED>("Unknown log level ")
|
||||
<< "(int level = " << static_cast<int>(level) << ")";
|
||||
}
|
||||
return strm;
|
||||
@@ -158,13 +162,13 @@ inline boost::log::formatting_ostream& operator<<
|
||||
{
|
||||
custom_severity_level level = manip.get();
|
||||
std::size_t idx = static_cast<std::size_t>(level);
|
||||
if (idx < fairmq::g_LogSeverityLevelString.size())
|
||||
if (idx < FairMQ::g_LogSeverityLevelString.size())
|
||||
{
|
||||
strm << fairmq::g_LogSeverityLevelString.at(idx);
|
||||
strm << FairMQ::g_LogSeverityLevelString.at(idx);
|
||||
}
|
||||
else
|
||||
{
|
||||
strm << write_in<fairmq::color::FG_RED>("Unknown log level ")
|
||||
strm << write_in<FairMQ::Color::FG_RED>("Unknown log level ")
|
||||
<< "(int level = " << static_cast<int>(level) << ")";
|
||||
}
|
||||
return strm;
|
||||
|
@@ -23,8 +23,8 @@
|
||||
|
||||
#include <boost/log/support/date_time.hpp>
|
||||
|
||||
void test_logger()
|
||||
{
|
||||
void test_logger()
|
||||
{
|
||||
LOG(TRACE) << "this is a trace message";
|
||||
LOG(DEBUG) << "this is a debug message";
|
||||
LOG(RESULTS) << "this is a results message";
|
||||
@@ -32,65 +32,62 @@
|
||||
LOG(WARN) << "this is a warning message";
|
||||
LOG(ERROR) << "this is an error message";
|
||||
LOG(STATE) << "this is a state message";
|
||||
}
|
||||
|
||||
void test_console_level()
|
||||
{
|
||||
}
|
||||
|
||||
void test_console_level()
|
||||
{
|
||||
std::cout<<"********* test logger : SET_LOG_CONSOLE_LEVEL(lvl) *********"<<std::endl;
|
||||
SET_LOG_CONSOLE_LEVEL(TRACE);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(DEBUG);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(RESULTS);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(INFO);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(WARN);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(ERROR);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
|
||||
|
||||
SET_LOG_CONSOLE_LEVEL(STATE);
|
||||
test_logger();
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
int main()
|
||||
{
|
||||
test_console_level();
|
||||
SET_LOG_CONSOLE_LEVEL(INFO);
|
||||
|
||||
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
LOG(INFO)<<"open log file 1";
|
||||
ADD_LOG_FILESINK("test_log1",ERROR);
|
||||
test_logger();
|
||||
|
||||
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
LOG(INFO)<<"open log file 2";
|
||||
ADD_LOG_FILESINK("test_log2",STATE);
|
||||
test_logger();
|
||||
|
||||
|
||||
// advanced commands
|
||||
std::cout << "----------------------------"<<std::endl;
|
||||
LOG(INFO)<<"open log file 3";// custom file sink setting
|
||||
AddFileSink([](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
return (sev == fairmq::ERROR);
|
||||
return (sev == FairMQ::ERROR);
|
||||
},
|
||||
boost::log::keywords::file_name = "test_log3_%5N.log",
|
||||
boost::log::keywords::rotation_size = 5 * 1024 * 1024,
|
||||
@@ -105,7 +102,7 @@ int main()
|
||||
FairMQ::Logger::sinkList.back()->set_filter([](const boost::log::attribute_value_set& attr_set)
|
||||
{
|
||||
auto sev = attr_set["Severity"].extract<custom_severity_level>();
|
||||
return (sev == fairmq::WARN) || (sev == fairmq::ERROR);
|
||||
return (sev == FairMQ::WARN) || (sev == FairMQ::ERROR);
|
||||
});
|
||||
test_logger();
|
||||
|
||||
@@ -114,5 +111,3 @@ int main()
|
||||
test_logger();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user