mediapipe/mediapipe/framework/port/logging.h
MediaPipe Team b133b0f200 Project import generated by Copybara.
GitOrigin-RevId: afeb9cf5a8c069c0a566d16e1622bbb086170e4d
2020-05-21 13:37:51 -04:00

69 lines
2.2 KiB
C++

// Copyright 2019 The MediaPipe Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef MEDIAPIPE_PORT_LOGGING_H_
#define MEDIAPIPE_PORT_LOGGING_H_
#include "absl/time/time.h"
#ifdef _WIN32
#define GLOG_NO_ABBREVIATED_SEVERITIES
#endif
#include "glog/logging.h"
namespace mediapipe {
using LogSeverity = google::LogSeverity;
const auto SetVLOGLevel = google::SetVLOGLevel;
class LogEntry {
public:
LogEntry(LogSeverity severity, const struct ::tm* tm_time,
absl::string_view message)
: severity_(severity),
timestamp_(absl::FromTM(*tm_time, absl::LocalTimeZone())),
text_message_(message) {}
LogSeverity log_severity() const { return severity_; }
absl::Time timestamp() const { return timestamp_; }
absl::string_view text_message() const { return text_message_; }
private:
LogSeverity severity_;
absl::Time timestamp_;
absl::string_view text_message_;
};
class LogSink : public google::LogSink {
public:
virtual ~LogSink() = default;
virtual void Send(const LogEntry& entry) = 0;
virtual void WaitTillSent() {}
private:
virtual void send(LogSeverity severity, const char* full_filename,
const char* base_filename, int line,
const struct ::tm* tm_time, const char* message,
size_t message_len) {
LogEntry log_entry(severity, tm_time,
absl::string_view(message, message_len));
Send(log_entry);
}
};
inline void AddLogSink(LogSink* destination) {
google::AddLogSink(destination);
}
inline void RemoveLogSink(LogSink* destination) {
google::RemoveLogSink(destination);
}
} // namespace mediapipe
#endif // MEDIAPIPE_PORT_LOGGING_H_