@@ -206,5 +206,51 @@ bool PatchMessage(google::protobuf::Message& dst, const google::protobuf::Messag
206206 return true ;
207207}
208208
209+ #if TABLEAU_PB_LOG_LEGACY
210+ // refer: https://github.com/protocolbuffers/protobuf/blob/v3.19.3/src/google/protobuf/stubs/logging.h
211+ void ProtobufLogHandler (google::protobuf::LogLevel level, const char * filename, int line, const std::string& msg) {
212+ #define TABLEAU_PB_LOG_INFO google::protobuf::LOGLEVEL_INFO
213+ #define TABLEAU_PB_LOG_WARNING google::protobuf::LOGLEVEL_WARNING
214+ #define TABLEAU_PB_LOG_ERROR google::protobuf::LOGLEVEL_ERROR
215+ #define TABLEAU_PB_LOG_FATAL google::protobuf::LOGLEVEL_FATAL
216+ #define TABLEAU_PB_LOG_LEVEL level
217+ #define TABLEAU_PB_LOG_FILENAME filename
218+ #define TABLEAU_PB_LOG_LINE line
219+ #define TABLEAU_PB_LOG_MESSAGE msg
220+ #else
221+ // refer: https://github.com/abseil/abseil-cpp/blob/20250512.1/absl/log/log_entry.h
222+ void ProtobufAbslLogSink::Send (const absl::LogEntry& entry) {
223+ #define TABLEAU_PB_LOG_INFO absl::LogSeverity::kInfo
224+ #define TABLEAU_PB_LOG_WARNING absl::LogSeverity::kWarning
225+ #define TABLEAU_PB_LOG_ERROR absl::LogSeverity::kError
226+ #define TABLEAU_PB_LOG_FATAL absl::LogSeverity::kFatal
227+ #define TABLEAU_PB_LOG_LEVEL entry.log_severity()
228+ #define TABLEAU_PB_LOG_FILENAME std::string (entry.source_filename()).c_str()
229+ #define TABLEAU_PB_LOG_LINE entry.source_line()
230+ #define TABLEAU_PB_LOG_MESSAGE std::string (entry.text_message()).c_str()
231+ #endif
232+
233+ static const std::unordered_map<decltype (TABLEAU_PB_LOG_LEVEL), log::Level> kLevelMap = {
234+ {TABLEAU_PB_LOG_INFO, log::kInfo },
235+ {TABLEAU_PB_LOG_WARNING, log::kWarn },
236+ {TABLEAU_PB_LOG_ERROR, log::kError },
237+ {TABLEAU_PB_LOG_FATAL, log::kFatal }};
238+ log::Level lvl = log::kWarn ; // default
239+ auto iter = kLevelMap .find (TABLEAU_PB_LOG_LEVEL);
240+ if (iter != kLevelMap .end ()) {
241+ lvl = iter->second ;
242+ }
243+ ATOM_LOGGER_CALL (tableau::log::DefaultLogger (), lvl, " [libprotobuf %s:%d] %s" , TABLEAU_PB_LOG_FILENAME,
244+ TABLEAU_PB_LOG_LINE, TABLEAU_PB_LOG_MESSAGE);
245+
246+ #undef TABLEAU_PB_LOG_INFO
247+ #undef TABLEAU_PB_LOG_WARNING
248+ #undef TABLEAU_PB_LOG_ERROR
249+ #undef TABLEAU_PB_LOG_FATAL
250+ #undef TABLEAU_PB_LOG_LEVEL
251+ #undef TABLEAU_PB_LOG_FILENAME
252+ #undef TABLEAU_PB_LOG_LINE
253+ #undef TABLEAU_PB_LOG_MESSAGE
254+ }
209255} // namespace util
210256} // namespace tableau
0 commit comments