Skip to content

Commit 89d4919

Browse files
committed
logging: allow {} as an input from FairMQ log. Otherwise catch the format_error and log the incident
1 parent 7cf11c3 commit 89d4919

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

src/common/base/DataDistLogger.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,11 @@ class DataDistLogger {
7878
static thread_local char* sThisThreadName;
7979

8080
inline void do_vformat(fmt::string_view format, fmt::format_args args) {
81-
fmt::vformat_to(mLogMessage, format, args);
81+
try {
82+
fmt::vformat_to(mLogMessage, format, args);
83+
} catch (const fmt::format_error &e) {
84+
fmt::format_to(mLogMessage, "FORMAT ERROR: {}. provided_format_string={}", e.what(), format);
85+
}
8286
}
8387

8488
public:
@@ -107,8 +111,8 @@ class DataDistLogger {
107111
{}
108112

109113
template<typename... Args>
110-
DataDistLogger(const DataDistSeverity pSeverity, const log_fmq&, const std::string &format, const Args&... pArgs)
111-
: DataDistLogger(pSeverity, log_fmt{}, ("[FMQ] " + format).c_str(), pArgs...)
114+
DataDistLogger(const DataDistSeverity pSeverity, const log_fmq&, const std::string &pMsg)
115+
: DataDistLogger(pSeverity, log_fmt{}, "[FMQ] {}", pMsg)
112116
{}
113117

114118
template<class... Args>
@@ -269,8 +273,8 @@ class DataDistLogger {
269273
if (DataDistLogger::LogEnabled(severity)) DataDistLogger(severity, DataDistLogger::log_fmt{}, __VA_ARGS__)
270274

271275
// Log with fmt for FMQ messages
272-
#define DDLOGF_FMQ(severity, ...) \
273-
if (DataDistLogger::LogEnabled(severity)) DataDistLogger(severity, DataDistLogger::log_fmq{}, __VA_ARGS__)
276+
#define DDLOGF_FMQ(severity, msg) \
277+
if (DataDistLogger::LogEnabled(severity)) DataDistLogger(severity, DataDistLogger::log_fmq{}, msg)
274278

275279
// Log with streams
276280
#define DDLOG(severity) \

src/tests/test_FmtPatterns.cxx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <iostream>
1818

1919
using namespace fmt;
20+
using namespace o2::DataDistribution;
2021

2122
static const constexpr char* FmtSubSpec = "{:#06x}";
2223

@@ -27,4 +28,9 @@ BOOST_AUTO_TEST_CASE(GetNextSeqNameTest)
2728
BOOST_CHECK("0x0000" == format(FmtSubSpec, 0)); // 32bit
2829
BOOST_CHECK("0xff00" == format(FmtSubSpec, 0xFF00)); // 32bit
2930
BOOST_CHECK("0x00ff" == format(FmtSubSpec, 0x00FF)); // 32bit
30-
}
31+
32+
33+
DataDistLogger(DataDistSeverity::info, DataDistLogger::log_fmq{}, std::string("{}"));
34+
35+
IDDLOG("Test {} {} {}", 1, 2);
36+
}

0 commit comments

Comments
 (0)