16 #ifndef TENSORFLOW_SERVING_CORE_LOG_COLLECTOR_H_
17 #define TENSORFLOW_SERVING_CORE_LOG_COLLECTOR_H_
23 #include "google/protobuf/message.h"
24 #include "tensorflow/core/lib/core/status.h"
25 #include "tensorflow_serving/config/log_collector_config.pb.h"
27 namespace tensorflow {
44 static Status Create(
const LogCollectorConfig& log_collector_config,
46 std::unique_ptr<LogCollector>* log_collector);
48 using Factory = std::function<decltype(Create)>;
52 static Status RegisterFactory(
const string& type,
const Factory& factory);
55 virtual Status CollectMessage(
const google::protobuf::Message& message) = 0;
59 virtual Status Flush() = 0;
65 namespace register_log_collector {
68 RegisterFactory(
const string& type,
const LogCollector::Factory& factory) {
71 TF_CHECK_OK(LogCollector::RegisterFactory(type, factory));
80 #define REGISTER_LOG_COLLECTOR_UNIQ_HELPER(ctr, type, factory) \
81 REGISTER_LOG_COLLECTOR_UNIQ(ctr, type, factory)
82 #define REGISTER_LOG_COLLECTOR_UNIQ(ctr, type, factory) \
83 static ::tensorflow::serving::register_log_collector::RegisterFactory \
84 register_lgc##ctr TF_ATTRIBUTE_UNUSED = \
85 ::tensorflow::serving::register_log_collector::RegisterFactory( \
89 #define REGISTER_LOG_COLLECTOR(type, factory) \
90 REGISTER_LOG_COLLECTOR_UNIQ_HELPER(__COUNTER__, type, factory)