Skip to content

Commit ffe527b

Browse files
committed
helper to redirect FMQ logs to infologger
1 parent 98a811d commit ffe527b

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#include <fairmq/FairMQLogger.h>
2+
#include <InfoLogger/InfoLogger.hxx>
3+
4+
5+
// This function setup a custom sink for FMQ logs so that they are redirected to infoLogger
6+
// The infologger context is set when invoked. Corresponding fields are fixed afterwards.
7+
void setFMQLogsToInfoLogger(AliceO2::InfoLogger::InfoLogger *logPtr=nullptr) {
8+
9+
static AliceO2::InfoLogger::InfoLoggerContext ctx;
10+
// set facility = FMQ? better to add dedicated "module" field
11+
//ctx.setField(AliceO2::InfoLogger::InfoLoggerContext::FieldName::Facility,"FMQ");
12+
13+
static AliceO2::InfoLogger::InfoLogger *theLogPtr=logPtr;
14+
if (logPtr==nullptr) {
15+
static AliceO2::InfoLogger::InfoLogger theLog;
16+
logPtr=&theLog;
17+
}
18+
19+
fair::Logger::SetConsoleSeverity(fair::Severity::nolog);
20+
21+
fair::Logger::AddCustomSink(
22+
"infoLogger", "trace", [&](const std::string& content, const fair::LogMetaData& metadata)
23+
{
24+
25+
// todo: update context from time to time?
26+
// ctx.refresh();
27+
28+
// translate FMQ metadata
29+
AliceO2::InfoLogger::InfoLogger::InfoLogger::Severity severity=AliceO2::InfoLogger::InfoLogger::Severity::Undefined;
30+
int level=AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.level;
31+
32+
if (metadata.severity_name== fair::Logger::SeverityName(fair::Severity::nolog)) {
33+
// discard
34+
return;
35+
}
36+
else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::fatal)) {
37+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Fatal;
38+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::error)) {
39+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Error;
40+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::warn)) {
41+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Warning;
42+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::state)) {
43+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Info;
44+
level=10;
45+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::info)) {
46+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Info;
47+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::debug)) {
48+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
49+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::debug1)) {
50+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
51+
level=10;
52+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::debug2)) {
53+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
54+
level=20;
55+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::debug3)) {
56+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
57+
level=30;
58+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::debug4)) {
59+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
60+
level=40;
61+
} else if (metadata.severity_name==fair::Logger::SeverityName(fair::Severity::trace)) {
62+
severity=AliceO2::InfoLogger::InfoLogger::Severity::Debug;
63+
level=50;
64+
}
65+
66+
AliceO2::InfoLogger::InfoLogger::InfoLoggerMessageOption opt={
67+
severity,
68+
level,
69+
AliceO2::InfoLogger::InfoLogger::undefinedMessageOption.errorCode,
70+
metadata.file.c_str(),
71+
atoi(metadata.line.c_str())
72+
};
73+
theLogPtr->log(opt,ctx,"FMQ: %s",content.c_str());
74+
}
75+
);
76+
}

0 commit comments

Comments
 (0)