NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/sdk/logs/logger_provider.h
Go to the documentation of this file.
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0/
3 
4 #pragma once
5 
6 #include <chrono>
7 #include <memory>
8 #include <mutex>
9 #include <vector>
10 
11 #include "opentelemetry/common/key_value_iterable.h"
12 #include "opentelemetry/logs/logger.h"
13 #include "opentelemetry/logs/logger_provider.h"
14 #include "opentelemetry/nostd/shared_ptr.h"
15 #include "opentelemetry/nostd/string_view.h"
16 #include "opentelemetry/sdk/logs/logger.h"
17 #include "opentelemetry/sdk/logs/logger_context.h"
18 #include "opentelemetry/sdk/logs/processor.h"
19 #include "opentelemetry/sdk/resource/resource.h"
20 #include "opentelemetry/version.h"
21 
22 // Define the maximum number of loggers that are allowed to be registered to the loggerprovider.
23 // TODO: Add link to logging spec once this is added to it
24 #define MAX_LOGGER_COUNT 100
25 
27 namespace sdk
28 {
29 namespace logs
30 {
31 class OPENTELEMETRY_EXPORT LoggerProvider final : public opentelemetry::logs::LoggerProvider
32 {
33 public:
40  explicit LoggerProvider(
41  std::unique_ptr<LogRecordProcessor> &&processor,
42  const opentelemetry::sdk::resource::Resource &resource =
43  opentelemetry::sdk::resource::Resource::Create({}),
48  .Build())) noexcept;
49 
57  explicit LoggerProvider(
58  std::vector<std::unique_ptr<LogRecordProcessor>> &&processors,
59  const opentelemetry::sdk::resource::Resource &resource =
60  opentelemetry::sdk::resource::Resource::Create({}),
65  .Build())) noexcept;
66 
71  explicit LoggerProvider() noexcept;
72 
77  explicit LoggerProvider(std::unique_ptr<LoggerContext> context) noexcept;
78 
79  ~LoggerProvider() override;
80 
81  using opentelemetry::logs::LoggerProvider::GetLogger;
82 
92  nostd::string_view logger_name,
93  nostd::string_view library_name,
94  nostd::string_view library_version = "",
95  nostd::string_view schema_url = "",
96  const opentelemetry::common::KeyValueIterable &attributes =
97  opentelemetry::common::NoopKeyValueIterable()) noexcept override;
98 
104  void AddProcessor(std::unique_ptr<LogRecordProcessor> processor) noexcept;
105 
110  const opentelemetry::sdk::resource::Resource &GetResource() const noexcept;
111 
115  bool Shutdown(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
116 
120  bool ForceFlush(std::chrono::microseconds timeout = (std::chrono::microseconds::max)()) noexcept;
121 
122 private:
123  // order of declaration is important here - loggers should destroy only after context.
124  std::vector<std::shared_ptr<opentelemetry::sdk::logs::Logger>> loggers_;
125  std::shared_ptr<LoggerContext> context_;
126  std::mutex lock_;
127 };
128 } // namespace logs
129 } // namespace sdk
nostd::unique_ptr
std::unique_ptr< _Types... > unique_ptr
Definition: includes/opentelemetry/std/unique_ptr.h:19
OPENTELEMETRY_EXPORT
#define OPENTELEMETRY_EXPORT
Definition: includes/opentelemetry/common/macros.h:386
prometheus::detail::make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: includes/prometheus/detail/future_std.h:28
logs
Definition: includes/opentelemetry/logs/event_id.h:13
nostd::shared_ptr< opentelemetry::logs::Logger >
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
context
Definition: includes/opentelemetry/context/context.h:16
max
int max(int a, int b)
Compute the component-wise maximum.
Definition: sources/libs/nvmultiobjecttracker/include/modules/cuDCFv2/helper_math.h:60
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
sdk::instrumentationscope::ScopeConfigurator::Builder
A builder class for the ScopeConfigurator that facilitates the creation of ScopeConfigurators.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:26
sdk::instrumentationscope::ScopeConfigurator
A scope configurator is a function that returns the scope config for a given instrumentation scope.
Definition: includes/opentelemetry/sdk/instrumentationscope/scope_configurator.h:20
sdk::logs::LoggerProvider
Definition: includes/opentelemetry/sdk/logs/logger_provider.h:31
sdk::logs::LoggerConfig::Default
static LoggerConfig Default()
Returns a LoggerConfig that represents a Logger configured with the default behavior.
sdk
Definition: includes/opentelemetry/sdk/common/atomic_shared_ptr.h:13
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37