16 #ifndef TENSORFLOW_SERVING_UTIL_NET_HTTP_INTERNAL_NET_LOGGING_H_
17 #define TENSORFLOW_SERVING_UTIL_NET_HTTP_INTERNAL_NET_LOGGING_H_
21 #include "absl/base/attributes.h"
22 #include "absl/base/log_severity.h"
23 #include "absl/base/macros.h"
24 #include "absl/base/port.h"
32 #define NET_LOG(severity, ...) \
34 constexpr const char* net_logging_internal_basename = \
35 ::tensorflow::serving::net_http::Basename(__FILE__, \
36 sizeof(__FILE__) - 1); \
37 ::tensorflow::serving::net_http::NetLog(NET_LOGGING_INTERNAL_##severity, \
38 net_logging_internal_basename, \
39 __LINE__, __VA_ARGS__); \
42 #define NET_CHECK(condition, message) \
44 if (ABSL_PREDICT_FALSE(!(condition))) { \
45 NET_LOG(FATAL, "Check %s failed: %s", #condition, message); \
49 #define NET_LOGGING_INTERNAL_INFO ::absl::LogSeverity::kInfo
50 #define NET_LOGGING_INTERNAL_WARNING ::absl::LogSeverity::kWarning
51 #define NET_LOGGING_INTERNAL_ERROR ::absl::LogSeverity::kError
52 #define NET_LOGGING_INTERNAL_FATAL ::absl::LogSeverity::kFatal
53 #define NET_LOGGING_INTERNAL_LEVEL(severity) \
54 ::absl::NormalizeLogSeverity(severity)
56 namespace tensorflow {
60 void NetLog(absl::LogSeverity severity,
const char* file,
int line,
61 const char* format, ...) ABSL_PRINTF_ATTRIBUTE(4, 5);
63 void SafeWriteToStderr(const
char* s,
size_t len);
65 constexpr const
char* Basename(const
char* fname,
int offset) {
66 return offset == 0 || fname[offset - 1] ==
'/' || fname[offset - 1] ==
'\\'
68 : Basename(fname, offset - 1);