b133b0f200
GitOrigin-RevId: afeb9cf5a8c069c0a566d16e1622bbb086170e4d
69 lines
2.2 KiB
C++
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_
|