17 #ifndef CYBER_LOGGER_ASYNC_LOGGER_H_ 18 #define CYBER_LOGGER_ASYNC_LOGGER_H_ 21 #include <condition_variable> 30 #include <unordered_map> 34 #include "glog/logging.h" 75 explicit AsyncLogger(google::base::Logger* wrapped);
104 void Write(
bool force_flush, time_t timestamp,
const char* message,
105 int message_len)
override;
110 void Flush()
override;
139 Msg() : ts(0), message(), level(google::INFO) {}
140 Msg(time_t ts, std::string&& message, int32_t level)
141 : ts(ts), message(std::move(message)), level(level) {}
142 Msg(
const Msg& rsh) {
144 message = rsh.message;
149 message = rsh.message;
152 Msg& operator=(Msg&& rsh) {
154 message = std::move(rsh.message);
158 Msg& operator=(
const Msg& rsh) {
160 message = rsh.message;
167 void FlushBuffer(
const std::unique_ptr<std::deque<Msg>>& msg);
169 google::base::Logger*
const wrapped_;
170 std::thread log_thread_;
174 std::atomic<uint64_t> flush_count_ = {0};
178 uint64_t drop_count_ = 0;
181 std::unique_ptr<std::deque<Msg>> active_buf_;
185 std::unique_ptr<std::deque<Msg>> flushing_buf_;
188 enum State { INITTED, RUNNING, STOPPED };
189 std::atomic<State> state_ = {INITTED};
190 std::atomic_flag flag_ = ATOMIC_FLAG_INIT;
191 std::unordered_map<std::string, std::unique_ptr<LogFileObject>>
201 #endif // CYBER_LOGGER_ASYNC_LOGGER_H_ Wrapper for a glog Logger which asynchronously writes log messages. This class starts a new thread re...
Definition: async_logger.h:73
uint32_t LogSize() override
Get the current LOG file size. The return value is an approximate value since some logged data may no...
std::thread * LogThread()
get the log thead
Definition: async_logger.h:126
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
#define DISALLOW_COPY_AND_ASSIGN(classname)
Definition: macros.h:48
void Start()
start the async logger
void Stop()
Stop the thread. Flush() and Write() must not be called after this. NOTE: this is currently only used...
void Flush() override
Flush any buffered messages.
AsyncLogger(google::base::Logger *wrapped)
void Write(bool force_flush, time_t timestamp, const char *message, int message_len) override
Write a message to the log. Start() must have been called.