Coverage Report

Created: 2024-07-27 06:53

/src/rocksdb/logging/event_logger.cc
Line
Count
Source (jump to first uncovered line)
1
//  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
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).
5
6
#include "logging/event_logger.h"
7
8
#include <cassert>
9
#include <cinttypes>
10
#include <sstream>
11
#include <string>
12
13
#include "util/string_util.h"
14
15
namespace ROCKSDB_NAMESPACE {
16
17
EventLoggerStream::EventLoggerStream(Logger* logger)
18
    : logger_(logger),
19
      log_buffer_(nullptr),
20
      max_log_size_(0),
21
9.02k
      json_writer_(nullptr) {}
22
23
EventLoggerStream::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
0
      json_writer_(nullptr) {}
29
30
9.02k
EventLoggerStream::~EventLoggerStream() {
31
9.02k
  if (json_writer_) {
32
9.02k
    json_writer_->EndObject();
33
#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
34
    printf("%s\n", json_writer_->Get().c_str());
35
#else
36
9.02k
    if (logger_) {
37
9.02k
      EventLogger::Log(logger_, *json_writer_);
38
9.02k
    } else if (log_buffer_) {
39
0
      assert(max_log_size_);
40
0
      EventLogger::LogToBuffer(log_buffer_, *json_writer_, max_log_size_);
41
0
    }
42
9.02k
#endif
43
9.02k
    delete json_writer_;
44
9.02k
  }
45
9.02k
}
46
47
4.48k
void EventLogger::Log(const JSONWriter& jwriter) { Log(logger_, jwriter); }
48
49
13.5k
void EventLogger::Log(Logger* logger, const JSONWriter& jwriter) {
50
#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
51
  printf("%s\n", jwriter.Get().c_str());
52
#else
53
13.5k
  ROCKSDB_NAMESPACE::Log(logger, "%s %s", Prefix(), jwriter.Get().c_str());
54
13.5k
#endif
55
13.5k
}
56
57
void EventLogger::LogToBuffer(LogBuffer* log_buffer, const JSONWriter& jwriter,
58
0
                              const size_t max_log_size) {
59
#ifdef ROCKSDB_PRINT_EVENTS_TO_STDOUT
60
  printf("%s\n", jwriter.Get().c_str());
61
#else
62
0
  assert(log_buffer);
63
0
  ROCKSDB_NAMESPACE::LogToBuffer(log_buffer, max_log_size, "%s %s", Prefix(),
64
0
                                 jwriter.Get().c_str());
65
0
#endif
66
0
}
67
68
}  // namespace ROCKSDB_NAMESPACE