Skip to content

Commit f15234d

Browse files
authored
Merge pull request #1327 from lplewa/common-log
Add Legacy compatibility to Logger
2 parents 78ef1ca + fb07a39 commit f15234d

File tree

3 files changed

+92
-9
lines changed

3 files changed

+92
-9
lines changed

source/common/logger/ur_logger.hpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,44 @@ inline void always(const char *format, Args &&...args) {
4848
get_logger().always(format, std::forward<Args>(args)...);
4949
}
5050

51+
template <typename... Args>
52+
inline void debug(const logger::LegacyMessage &p, const char *format,
53+
Args &&...args) {
54+
get_logger().log(p, logger::Level::DEBUG, format,
55+
std::forward<Args>(args)...);
56+
}
57+
58+
template <typename... Args>
59+
inline void info(logger::LegacyMessage p, const char *format, Args &&...args) {
60+
get_logger().log(p, logger::Level::INFO, format,
61+
std::forward<Args>(args)...);
62+
}
63+
64+
template <typename... Args>
65+
inline void warning(logger::LegacyMessage p, const char *format,
66+
Args &&...args) {
67+
get_logger().log(p, logger::Level::WARN, format,
68+
std::forward<Args>(args)...);
69+
}
70+
71+
template <typename... Args>
72+
inline void error(logger::LegacyMessage p, const char *format, Args &&...args) {
73+
get_logger().log(p, logger::Level::ERR, format,
74+
std::forward<Args>(args)...);
75+
}
76+
5177
inline void setLevel(logger::Level level) { get_logger().setLevel(level); }
5278

5379
inline void setFlushLevel(logger::Level level) {
5480
get_logger().setFlushLevel(level);
5581
}
5682

83+
template <typename T> inline std::string toHex(T t) {
84+
std::stringstream s;
85+
s << std::hex << t;
86+
return s.str();
87+
}
88+
5789
/// @brief Create an instance of the logger with parameters obtained from the respective
5890
/// environment variable or with default configuration if the env var is empty,
5991
/// not set, or has the wrong format.

source/common/logger/ur_logger_details.hpp

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111

1212
namespace logger {
1313

14+
struct LegacyMessage {
15+
LegacyMessage(const char *p) : message(p){};
16+
const char *message;
17+
};
18+
1419
class Logger {
1520
public:
1621
Logger(std::unique_ptr<logger::Sink> sink) : sink(std::move(sink)) {
@@ -59,20 +64,63 @@ class Logger {
5964
}
6065
}
6166

67+
template <typename... Args>
68+
void debug(const logger::LegacyMessage &p, const char *format,
69+
Args &&...args) {
70+
log(p, logger::Level::DEBUG, format, std::forward<Args>(args)...);
71+
}
72+
73+
template <typename... Args>
74+
void info(const logger::LegacyMessage &p, const char *format,
75+
Args &&...args) {
76+
log(p, logger::Level::INFO, format, std::forward<Args>(args)...);
77+
}
78+
79+
template <typename... Args>
80+
void warning(const logger::LegacyMessage &p, const char *format,
81+
Args &&...args) {
82+
log(p, logger::Level::WARN, format, std::forward<Args>(args)...);
83+
}
84+
85+
template <typename... Args>
86+
void error(const logger::LegacyMessage &p, const char *format,
87+
Args &&...args) {
88+
log(p, logger::Level::ERR, format, std::forward<Args>(args)...);
89+
}
90+
6291
template <typename... Args>
6392
void log(logger::Level level, const char *format, Args &&...args) {
64-
if (level < this->level) {
93+
log(logger::LegacyMessage(format), level, format,
94+
std::forward<Args>(args)...);
95+
}
96+
97+
template <typename... Args>
98+
void log(const logger::LegacyMessage &p, logger::Level level,
99+
const char *format, Args &&...args) {
100+
if (!sink) {
65101
return;
66102
}
67103

68-
if (sink) {
69-
sink->log(level, format, std::forward<Args>(args)...);
104+
if (isLegacySink) {
105+
sink->log(level, p.message, std::forward<Args>(args)...);
106+
return;
70107
}
108+
if (level < this->level) {
109+
return;
110+
}
111+
112+
sink->log(level, format, std::forward<Args>(args)...);
113+
}
114+
115+
void setLegacySink(std::unique_ptr<logger::Sink> legacySink) {
116+
this->isLegacySink = true;
117+
this->sink = std::move(legacySink);
71118
}
72119

73120
private:
74121
logger::Level level;
75122
std::unique_ptr<logger::Sink> sink;
123+
bool isLegacySink = false;
76124
};
77125

78126
} // namespace logger

source/common/logger/ur_sinks.hpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,7 @@ class Sink {
2828
}
2929

3030
format(buffer, fmt, std::forward<Args &&>(args)...);
31-
32-
std::scoped_lock<std::mutex> lock(output_mutex);
33-
*ostream << buffer.str();
34-
if (level >= flush_level) {
35-
ostream->flush();
36-
}
31+
print(level, buffer.str());
3732
}
3833

3934
void setFlushLevel(logger::Level level) { this->flush_level = level; }
@@ -50,6 +45,14 @@ class Sink {
5045
flush_level = logger::Level::ERR;
5146
}
5247

48+
virtual void print(logger::Level level, const std::string &msg) {
49+
std::scoped_lock<std::mutex> lock(output_mutex);
50+
*ostream << msg;
51+
if (level >= flush_level) {
52+
ostream->flush();
53+
}
54+
}
55+
5356
private:
5457
std::string logger_name;
5558
bool skip_prefix;

0 commit comments

Comments
 (0)