Tôi đang sử dụng tăng 1.54.0. Dưới đây bạn có thể tìm thấy một ví dụ tối thiểu minh họa vấn đề của tôi.Tăng cường nhật ký severity_logger init_from_stream
Tôi sử dụng mức độ nghiêm trọng_logger nhật ký tăng cường. Tôi muốn định cấu hình bồn của mình từ một luồng. (Trong ví dụ sau tôi sử dụng một chuỗi. Trong ứng dụng thực sự của tôi, luồng xuất phát từ một tệp.) Tôi muốn sử dụng% Severity% cho mục đích đầu ra hoặc lọc.
My vấn đề là: Nếu tôi sử dụng nó như được nêu trong ví dụ bên dưới, % Mức độ nghiêm trọng% trống.
% Dòng ID% và% Message% được điền như mong đợi. Nếu tôi thiết lập một bồn rửa như được đưa ra trong các dòng outcommented, nó hoạt động như mong đợi.
Bất kỳ ý tưởng nào?
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/from_stream.hpp>
#include <boost/log/utility/setup/console.hpp>
#include <boost/log/expressions.hpp>
enum SeverityLevel { trace, fatal };
int main (int argc, char *argv[])
{
boost::log::add_common_attributes();
/*
struct severity_tag;
boost::log::add_console_log(std::clog,
boost::log::keywords::format = (
boost::log::expressions::stream
<< boost::log::expressions::attr< unsigned int >("LineID")
<< ": <" << boost::log::expressions::attr<SeverityLevel, severity_tag >("Severity")
<< "> " << boost::log::expressions::smessage)
); */
std::stringstream s;
s << "[Sinks.MySink]" << std::endl;
s << "Destination=Console" << std::endl;
s << "Format=\"%LineID%: <%Severity%> - %Message%\"" << std::endl;
boost::log::init_from_stream(s);
boost::log::sources::severity_logger<SeverityLevel> lg;
BOOST_LOG_SEV(lg, trace) << "This is a trace message";
BOOST_LOG_SEV(lg, fatal) << "This is a fatal message";
return 0;
}
Nó sẽ appeat bạn cần hướng dẫn Boost Log thực sự sử dụng 'Sinks.MySink'. Đáng buồn thay, tôi không có kinh nghiệm với cấu hình Boost Log – sehe
Đó không phải là vấn đề. Nó đang sử dụng MySink. Định dạng tôi cung cấp được sử dụng như mong muốn. Ngoại trừ:% Severity% được thay thế bằng một chuỗi rỗng. Nó phải là số của giá trị enum. Nó hoạt động tốt với cách cấu hình bồn rửa. – SebastianK