Skip to content

Commit 9f7d0aa

Browse files
authored
feat!: default to null logger (#187)
The library now uses a NullLogger by default if no logger is specified. This means that no logs will be printed unless a customer logger is provided.
1 parent dc5781d commit 9f7d0aa

File tree

18 files changed

+45
-15
lines changed

18 files changed

+45
-15
lines changed

BUILD.bazel

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ cc_library(
4949
"src/datadog/version.cpp",
5050
"src/datadog/w3c_propagation.cpp",
5151
"src/datadog/base64.h",
52-
"src/datadog/cerr_logger.h",
5352
"src/datadog/config_manager.h",
5453
"src/datadog/collector_response.h",
5554
"src/datadog/datadog_agent.h",
@@ -62,6 +61,7 @@ cc_library(
6261
"src/datadog/json_serializer.h",
6362
"src/datadog/limiter.h",
6463
"src/datadog/msgpack.h",
64+
"src/datadog/null_logger.h",
6565
"src/datadog/parse_util.h",
6666
"src/datadog/platform_util.h",
6767
"src/datadog/random.h",
@@ -78,6 +78,7 @@ cc_library(
7878
"src/datadog/w3c_propagation.h",
7979
],
8080
hdrs = [
81+
"include/datadog/cerr_logger.h",
8182
"include/datadog/clock.h",
8283
"include/datadog/collector.h",
8384
"include/datadog/config.h",

examples/hasher/hasher.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
// canonical format. Produce a trace whose structure reflects the directory
1111
// structure.
1212

13+
#include <datadog/cerr_logger.h>
1314
#include <datadog/span_config.h>
1415
#include <datadog/tracer.h>
1516
#include <datadog/tracer_config.h>
@@ -133,6 +134,7 @@ int main() {
133134
dd::TracerConfig config;
134135
config.service = "dd-trace-cpp-example";
135136
config.environment = "dev";
137+
config.logger = std::make_shared<datadog::tracing::CerrLogger>();
136138

137139
auto validated = dd::finalize_config(config);
138140
if (auto *error = validated.if_error()) {

examples/http-server/proxy/proxy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <optional>
99
#include <string_view>
1010

11+
#include "datadog/cerr_logger.h"
1112
#include "datadog/dict_reader.h"
1213
#include "datadog/dict_writer.h"
1314
#include "datadog/span.h"
@@ -27,6 +28,7 @@ int main() {
2728
dd::TracerConfig config;
2829
config.service = "dd-trace-cpp-http-server-example-proxy";
2930
config.service_type = "proxy";
31+
config.logger = std::make_shared<datadog::tracing::CerrLogger>();
3032

3133
// `finalize_config` validates `config` and applies any settings from
3234
// environment variables, such as `DD_AGENT_HOST`.

examples/http-server/server/server.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
//
2222
// will deliver a response after approximately 23 milliseconds.
2323

24+
#include <datadog/cerr_logger.h>
2425
#include <datadog/clock.h>
2526
#include <datadog/dict_reader.h>
2627
#include <datadog/dict_writer.h>
@@ -110,6 +111,7 @@ int main() {
110111
dd::TracerConfig config;
111112
config.service = "dd-trace-cpp-http-server-example-server";
112113
config.service_type = "server";
114+
config.logger = std::make_shared<datadog::tracing::CerrLogger>();
113115

114116
// `finalize_config` validates `config` and applies any settings from
115117
// environment variables, such as `DD_AGENT_HOST`.

src/datadog/cerr_logger.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "cerr_logger.h"
1+
#include <datadog/cerr_logger.h>
22

33
#include <iostream>
44

src/datadog/null_logger.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#pragma once
2+
3+
// This component provides a class, `NullLogger`, that implements the `Logger`
4+
// interface from `logger.h`.
5+
// `NullLogger` is a no-op logger, meaning it doesn't log anything.
6+
//
7+
// `NullLogger` is the default logger used by `Tracer` unless otherwise
8+
// configured in `TracerConfig`.
9+
10+
#include <datadog/logger.h>
11+
12+
namespace datadog {
13+
namespace tracing {
14+
15+
class NullLogger : public Logger {
16+
public:
17+
void log_error(const LogFunc&) override{};
18+
void log_startup(const LogFunc&) override{};
19+
20+
void log_error(const Error&) override{};
21+
void log_error(StringView) override{};
22+
};
23+
24+
} // namespace tracing
25+
} // namespace datadog

src/datadog/tracer_config.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
#include <unordered_map>
99
#include <vector>
1010

11-
#include "cerr_logger.h"
1211
#include "datadog_agent.h"
1312
#include "json.hpp"
13+
#include "null_logger.h"
1414
#include "parse_util.h"
1515
#include "platform_util.h"
1616
#include "string_util.h"
@@ -240,7 +240,7 @@ Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &config) {
240240
Expected<FinalizedTracerConfig> finalize_config(const TracerConfig &user_config,
241241
const Clock &clock) {
242242
auto logger =
243-
user_config.logger ? user_config.logger : std::make_shared<CerrLogger>();
243+
user_config.logger ? user_config.logger : std::make_shared<NullLogger>();
244244

245245
Expected<TracerConfig> env_config = load_tracer_env_config(*logger);
246246
if (auto error = env_config.if_error()) {

test/mocks/loggers.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,6 @@
1616

1717
using namespace datadog::tracing;
1818

19-
struct NullLogger : public Logger {
20-
void log_error(const LogFunc&) override {}
21-
void log_startup(const LogFunc&) override {}
22-
void log_error(const Error&) override {}
23-
void log_error(StringView) override {}
24-
};
25-
2619
struct MockLogger : public Logger {
2720
struct Entry {
2821
enum Kind { DD_ERROR, STARTUP } kind;

test/remote_config/test_remote_config.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "catch.hpp"
44
#include "datadog/json.hpp"
55
#include "datadog/remote_config/remote_config.h"
6-
#include "mocks/loggers.h"
6+
#include "null_logger.h"
77

88
namespace rc = datadog::remote_config;
99
using namespace datadog::tracing;

0 commit comments

Comments
 (0)