]> git.proxmox.com Git - ceph.git/blame - ceph/src/rocksdb/logging/event_logger.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / rocksdb / logging / event_logger.cc
CommitLineData
7c673cae 1// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
11fdf7f2
TL
2// This source code is licensed under both the GPLv2 (found in the
3// COPYING file in the root directory) and Apache 2.0 License
4// (found in the LICENSE.Apache file in the root directory).
7c673cae 5
f67539c2 6#include "logging/event_logger.h"
7c673cae 7
7c673cae 8#include <cassert>
f67539c2 9#include <cinttypes>
7c673cae
FG
10#include <sstream>
11#include <string>
12
7c673cae
FG
13#include "util/string_util.h"
14
f67539c2 15namespace ROCKSDB_NAMESPACE {
7c673cae
FG
16
17EventLoggerStream::EventLoggerStream(Logger* logger)
f67539c2
TL
18 : logger_(logger),
19 log_buffer_(nullptr),
20 max_log_size_(0),
21 json_writer_(nullptr) {}
7c673cae 22
f67539c2
TL
23EventLoggerStream::EventLoggerStream(LogBuffer* log_buffer,
24 const size_t max_log_size)
25 : logger_(nullptr),
26 log_buffer_(log_buffer),
27 max_log_size_(max_log_size),
28 json_writer_(nullptr) {}
7c673cae
FG
29
30EventLoggerStream::~EventLoggerStream() {
31 if (json_writer_) {
32 json_writer_->EndObject();
33#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
34 printf("%s\n", json_writer_->Get().c_str());
35#else
36 if (logger_) {
37 EventLogger::Log(logger_, *json_writer_);
38 } else if (log_buffer_) {
f67539c2
TL
39 assert(max_log_size_);
40 EventLogger::LogToBuffer(log_buffer_, *json_writer_, max_log_size_);
7c673cae
FG
41 }
42#endif
43 delete json_writer_;
44 }
45}
46
47void EventLogger::Log(const JSONWriter& jwriter) {
48 Log(logger_, jwriter);
49}
50
51void EventLogger::Log(Logger* logger, const JSONWriter& jwriter) {
52#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
53 printf("%s\n", jwriter.Get().c_str());
54#else
f67539c2 55 ROCKSDB_NAMESPACE::Log(logger, "%s %s", Prefix(), jwriter.Get().c_str());
7c673cae
FG
56#endif
57}
58
f67539c2
TL
59void EventLogger::LogToBuffer(LogBuffer* log_buffer, const JSONWriter& jwriter,
60 const size_t max_log_size) {
7c673cae
FG
61#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
62 printf("%s\n", jwriter.Get().c_str());
63#else
64 assert(log_buffer);
f67539c2
TL
65 ROCKSDB_NAMESPACE::LogToBuffer(log_buffer, max_log_size, "%s %s", Prefix(),
66 jwriter.Get().c_str());
7c673cae
FG
67#endif
68}
69
f67539c2 70} // namespace ROCKSDB_NAMESPACE