Program Listing for File log_record.h

Return to documentation for file (/tmp/B.puc0r6hi/BUILD/opentelemetry-cpp-1.27.0-build/opentelemetry-cpp-1.27.0/api/include/opentelemetry/logs/log_record.h)

// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#pragma once

#include "opentelemetry/common/attribute_value.h"
#include "opentelemetry/common/timestamp.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
namespace trace
{
class SpanId;
class TraceId;
class TraceFlags;
}  // namespace trace

namespace logs
{

enum class Severity : uint8_t;

class LogRecord
{
public:
  LogRecord()                                 = default;
  LogRecord(const LogRecord &)                = default;
  LogRecord(LogRecord &&) noexcept            = default;
  LogRecord &operator=(const LogRecord &)     = default;
  LogRecord &operator=(LogRecord &&) noexcept = default;
  virtual ~LogRecord()                        = default;

  virtual void SetTimestamp(common::SystemTimestamp timestamp) noexcept = 0;

  virtual void SetObservedTimestamp(common::SystemTimestamp timestamp) noexcept = 0;

  virtual void SetSeverity(logs::Severity severity) noexcept = 0;

  virtual void SetBody(const common::AttributeValue &message) noexcept = 0;

  virtual void SetAttribute(nostd::string_view key,
                            const common::AttributeValue &value) noexcept = 0;

  // TODO: mark this as pure virtual once all exporters have been updated
  virtual void SetEventId(int64_t id, nostd::string_view name = {}) noexcept = 0;

  virtual void SetTraceId(const trace::TraceId &trace_id) noexcept = 0;

  virtual void SetSpanId(const trace::SpanId &span_id) noexcept = 0;

  virtual void SetTraceFlags(const trace::TraceFlags &trace_flags) noexcept = 0;
};
}  // namespace logs
OPENTELEMETRY_END_NAMESPACE