Skip to content

Commit 4d2eb80

Browse files
authored
[user_events] Set EventHeader name to the event_name property (#533)
1 parent 3d2bf3a commit 4d2eb80

File tree

4 files changed

+53
-32
lines changed

4 files changed

+53
-32
lines changed

.github/workflows/user_events.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
uses: actions/checkout@v3
2828
with:
2929
repository: "open-telemetry/opentelemetry-cpp"
30-
ref: "v1.18.0"
30+
ref: "64a74bfadbdc10f8f8e3d0435b19d08de19537d1"
3131
path: "opentelemetry-cpp"
3232
submodules: "recursive"
3333
- name: setup dependencies

exporters/user_events/include/opentelemetry/exporters/user_events/logs/recordable.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#pragma once
55

66
#include <cstdint>
7-
#include "opentelemetry/nostd/string_view.h"
87
#include "opentelemetry/logs/severity.h"
8+
#include "opentelemetry/nostd/string_view.h"
99
#include "opentelemetry/sdk/common/attribute_utils.h"
1010
#include "opentelemetry/sdk/logs/recordable.h"
1111
#include "opentelemetry/version.h"
@@ -117,11 +117,15 @@ class Recordable final : public opentelemetry::sdk::logs::Recordable
117117

118118
private:
119119
ehd::EventBuilder event_builder_;
120-
int level_index_;
120+
int64_t event_id_ = 0;
121+
nostd::string_view event_name_;
122+
int level_index_ = 0;
121123
size_t cs_part_b_bookmark_ = 0;
122124
size_t cs_part_b_bookmark_size_ = 0;
123125
size_t cs_part_c_bookmark_ = 0;
124126
size_t cs_part_c_bookmark_size_ = 0;
127+
uint8_t severity_ = 0;
128+
bool has_event_id_ = false;
125129
};
126130

127131
} // namespace logs

exporters/user_events/src/logs_exporter.cc

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ namespace logs
1919

2020
/*********************** Constructor ***********************/
2121

22-
Exporter::Exporter(const ExporterOptions &options) noexcept : options_(options), provider_(options.provider_name)
22+
Exporter::Exporter(const ExporterOptions &options) noexcept
23+
: options_(options), provider_(options.provider_name)
2324
{
2425
// Initialize the event sets
25-
for (int i = 0; i < sizeof(event_levels_map)/sizeof(event_levels_map[0]); i++)
26+
for (int i = 0; i < sizeof(event_levels_map) / sizeof(event_levels_map[0]); i++)
2627
{
2728
event_set_levels_[i] = provider_.RegisterSet(event_levels_map[i], 1);
2829
}
@@ -52,9 +53,10 @@ sdk::common::ExportResult Exporter::Export(
5253
auto user_events_record =
5354
std::unique_ptr<Recordable>(static_cast<Recordable *>(record.release()));
5455

55-
user_events_record->PrepareExport();
56-
57-
// assert(user_events_record != nullptr, "Recordable is null");
56+
if (!user_events_record->PrepareExport())
57+
{
58+
continue;
59+
}
5860

5961
int level_index = user_events_record->GetLevelIndex();
6062

exporters/user_events/src/recordable.cc

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,50 +17,58 @@ namespace logs
1717

1818
namespace api_logs = opentelemetry::logs;
1919

20-
Recordable::Recordable() noexcept
21-
{
22-
event_builder_.Reset("OpenTelemetry-Logs");
23-
24-
utils::PopulateAttribute("__csver__", static_cast<uint16_t>(0x400), event_builder_);
25-
}
20+
Recordable::Recordable() noexcept {}
2621

2722
void Recordable::SetSeverity(api_logs::Severity severity) noexcept
2823
{
2924
uint8_t severity_value = static_cast<uint8_t>(severity);
30-
if (severity_value == 0 || severity_value > 24)
25+
if (severity_value > 24)
3126
{
3227
OTEL_INTERNAL_LOG_ERROR(
3328
"[user_events Log Exporter] Recordable: invalid severity value: " << severity_value);
34-
severity_value = 1;
29+
severity_value = 0;
3530
}
3631

32+
severity_ = severity_value;
3733
level_index_ = (severity_value - 1) >> 2;
38-
39-
cs_part_b_bookmark_size_ += 2;
40-
event_builder_.AddValue("severityNumber", static_cast<uint16_t>(severity_value),
41-
event_field_format_default);
42-
auto severity_text = api_logs::SeverityNumToText[static_cast<uint32_t>(severity_value)].data();
43-
event_builder_.AddString<char>("severityText", severity_text, event_field_format_default);
4434
}
4535

4636
void Recordable::SetBody(const opentelemetry::common::AttributeValue &message) noexcept
4737
{
48-
// Set intial bookmark size to 1 for body below.
49-
cs_part_b_bookmark_size_++;
38+
if (severity_ == 0)
39+
{
40+
OTEL_INTERNAL_LOG_ERROR("[user_events Log Exporter] Recordable: severity is not set.");
41+
return;
42+
}
43+
44+
auto event_name = !event_name_.empty() ? event_name_.data() : "OpenTelemetryLogs";
45+
46+
event_builder_.Reset(event_name);
47+
utils::PopulateAttribute("__csver__", static_cast<uint16_t>(0x400), event_builder_);
48+
5049
event_builder_.AddStruct("PartB", 1, 0, &cs_part_b_bookmark_);
5150
utils::PopulateAttribute("_typeName", "Log", event_builder_);
51+
52+
event_builder_.AddValue("severityNumber", static_cast<uint16_t>(severity_),
53+
event_field_format_default);
54+
auto severity_text = api_logs::SeverityNumToText[static_cast<uint32_t>(severity_)].data();
55+
event_builder_.AddString<char>("severityText", severity_text, event_field_format_default);
56+
cs_part_b_bookmark_size_ = 4; // with the below body counted because it is available.
57+
58+
if (has_event_id_)
59+
{
60+
utils::PopulateAttribute("eventId", event_id_, event_builder_);
61+
cs_part_b_bookmark_size_++;
62+
}
63+
5264
utils::PopulateAttribute("body", message, event_builder_);
5365
}
5466

5567
void Recordable::SetEventId(int64_t id, nostd::string_view name) noexcept
5668
{
57-
cs_part_b_bookmark_size_++;
58-
utils::PopulateAttribute("eventId", id, event_builder_);
59-
if (!name.empty())
60-
{
61-
cs_part_b_bookmark_size_++;
62-
utils::PopulateAttribute("name", name, event_builder_);
63-
}
69+
has_event_id_ = true;
70+
event_id_ = id;
71+
event_name_ = name;
6472
}
6573

6674
void Recordable::SetTraceId(const opentelemetry::trace::TraceId &trace_id) noexcept
@@ -96,10 +104,17 @@ void Recordable::SetTimestamp(opentelemetry::common::SystemTimestamp timestamp)
96104

97105
bool Recordable::PrepareExport() noexcept
98106
{
99-
if (cs_part_b_bookmark_size_ > 0)
107+
if (cs_part_b_bookmark_size_ == 0)
108+
{
109+
// Part B is mandatory for exporting to user_events.
110+
OTEL_INTERNAL_LOG_ERROR("[user_events Log Exporter] Recordable: no data to export.");
111+
return false;
112+
}
113+
else
100114
{
101115
event_builder_.SetStructFieldCount(cs_part_b_bookmark_, cs_part_b_bookmark_size_);
102116
}
117+
103118
if (cs_part_c_bookmark_size_ > 0)
104119
{
105120
event_builder_.SetStructFieldCount(cs_part_c_bookmark_, cs_part_c_bookmark_size_);

0 commit comments

Comments
 (0)