1
#pragma once
2

            
3
#include "source/common/common/logger.h"
4

            
5
#include "datadog/logger.h"
6

            
7
namespace Envoy {
8
namespace Extensions {
9
namespace Tracers {
10
namespace Datadog {
11

            
12
/**
13
 * Logging adapter for use by dd-trace-cpp. This class implements dd-trace-cpp's
14
 * datadog::tracing::Logger interface in terms of spdlog::logger, which is what
15
 * is used by Envoy. An instance of this class is passed into dd-trace-cpp when
16
 * tracing is configured, allowing dd-trace-cpp to produce Envoy logs.
17
 */
18
class Logger : public datadog::tracing::Logger {
19
public:
20
  explicit Logger(spdlog::logger& logger);
21

            
22
  // datadog::tracing::Logger
23

            
24
  void log_error(const LogFunc&) override;
25
  void log_startup(const LogFunc&) override;
26

            
27
  void log_error(const datadog::tracing::Error&) override;
28
  void log_error(datadog::tracing::StringView) override;
29

            
30
private:
31
  spdlog::logger& logger_;
32
};
33

            
34
} // namespace Datadog
35
} // namespace Tracers
36
} // namespace Extensions
37
} // namespace Envoy