@@ -199,17 +199,18 @@ StructuredLogger::StructuredLogger() : IndependentLogger(name) {
199199 std::find (this ->messages ().begin (), this ->messages ().end (), msg) == this ->messages ().end ()) {
200200 // Store the message
201201 this ->messages ().push_back (msg);
202-
202+
203+ oreSeverity logSeverity = boost::log::extract<oreSeverity>(severity.get_name (), rec).get ();
203204 // If a file sink has been defined, then send the log record to it.
204205 if (this ->fileSink ()) {
205206 // Send to structured log file
206207 lsrc::severity_logger_mt<oreSeverity> lg;
207208 lg.add_attribute (messageType.get_name (), lattr::constant<string>(name));
208- BOOST_LOG_SEV (lg, oreSeverity::warning ) << rec[lexpr::smessage];
209+ BOOST_LOG_SEV (lg, logSeverity ) << rec[lexpr::smessage];
209210 }
210211
211212 // Also send to full log file
212- MLOG (oreSeverity::warning , StructuredMessage::name << " " << rec[lexpr::smessage]);
213+ MLOG (logSeverity , StructuredMessage::name << " " << rec[lexpr::smessage]);
213214 }
214215 };
215216 sink->set_formatter (formatter);
@@ -564,7 +565,19 @@ StructuredMessage::StructuredMessage(const Category& category, const Group& grou
564565void StructuredMessage::log () const {
565566 lsrc::severity_logger_mt<oreSeverity> lg;
566567 lg.add_attribute (messageType.get_name (), lattr::constant<string>(name));
567- BOOST_LOG_SEV (lg, oreSeverity::alert) << json ();
568+
569+ auto it = data_.find (" category" );
570+ QL_REQUIRE (it != data_.end (), " StructuredMessage must have a 'category' key specified." );
571+ QL_REQUIRE (it->second .type () == typeid (string), " StructuredMessage category must be a string." );
572+
573+ string category = boost::any_cast<string>(it->second );
574+ if (category == to_string (StructuredMessage::Category::Unknown) || category == to_string (StructuredMessage::Category::Warning)) {
575+ BOOST_LOG_SEV (lg, oreSeverity::warning) << json ();
576+ } else if (category == to_string (StructuredMessage::Category::Error)) {
577+ BOOST_LOG_SEV (lg, oreSeverity::alert) << json ();
578+ } else {
579+ QL_FAIL (" StructuredMessage::log() invalid category '" << category << " '" );
580+ }
568581}
569582
570583void StructuredMessage::addSubFields (const map<string, string>& subFields) {
0 commit comments