मैं अपने सी ++ प्रोग्राम में बूस्ट लॉग का उपयोग कर रहा हूं, और मेरे पास परिभाषित एक गंभीरता_लेवल एनम का उपयोग कर कस्टम severity_logger<severity_level>
है। फिर मैं प्रारूप स्ट्रिंग "%TimeStamp% [%ThreadID%] %Severity% %Module% - %Message%"
के साथ अपना लॉग सिंक बना देता हूं लेकिन यह गंभीरता प्रदर्शित नहीं करता है जहां मेरे पास %Severity%
है लेकिन इसके बजाय उस स्थिति में बस खाली है। उदाहरण के लिए, 2013-07-29 10:31 [0xDEADBEEF] my.Module - Hello World
। गंभीरता के स्तर को प्रदर्शित करने के लिए मुझे अपने प्रारूप स्ट्रिंग में क्या करने की ज़रूरत है?बूस्ट लॉग में, मैं एक प्रारूप स्ट्रिंग का उपयोग कर कस्टम severity_level कैसे प्रारूपित करूं?
यहाँ मेरी कोड के एक हिस्से को बताया गया है:
#define NUM_SEVERITY_LEVELS 6
enum severity_level
{
// These are deliberately the same levels that log4j uses
trace = 0,
debug = 1,
info = 2,
warning = 3,
error = 4,
fatal = 5
};
typedef src::severity_logger<severity_level> logger_t;
const char* severity_level_str[NUM_SEVERITY_LEVELS] = {
"TRACE",
"DEBUG",
"INFO",
"WARNING",
"ERROR",
"FATAL"
};
template< typename CharT, typename TraitsT >
std::basic_ostream< CharT, TraitsT >&
operator<< (
std::basic_ostream< CharT, TraitsT >& strm,
severity_level lvl
)
{
const char* str = severity_level_str[lvl];
if (lvl < NUM_SEVERITY_LEVELS && lvl >= 0)
strm << str;
else
strm << static_cast<int>(lvl);
return strm;
}
#define FORMAT_STRING "%TimeStamp% [%ThreadID%] %Severity% %Module% - %Message%"
boost::shared_ptr< sinks::synchronous_sink<sinks::text_file_backend> >
LOG_CREATE_SINK(const std::string& strLogFilename, bool fAutoFlush)
{
return logging::add_file_log(
keywords::file_name = strLogFilename,
keywords::open_mode = (std::ios_base::app | std::ios_base::out) & ~std::ios_base::in,
keywords::auto_flush = fAutoFlush,
keywords::format = FORMAT_STRING);
}
प्रश्न http://stackoverflow.com/questions/15853981/boost-log-2-0-empty-severity-level- से संबंधित प्रतीत हो रहा है में लॉग। मुझे एक ही समस्या है, प्रारूप स्ट्रिंग में% गंभीरता% प्रदान करने के साथ severity_logger काम नहीं करता है। – SebastianK