Skip to content

Commit

Permalink
log: Add EventName (#6187)
Browse files Browse the repository at this point in the history
Fixes #6182
Towards #6184

Towards #6181

Prior-art: #6018
  • Loading branch information
pellared authored Jan 22, 2025
1 parent e108415 commit 185547c
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 2 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
### Added

- Add `ValueFromAttribute` and `KeyValueFromAttribute` in `go.opentelemetry.io/otel/log`. (#6180)
- Add `EventName` and `SetEventName` to `Record` in `go.opentelemetry.io/otel/log`. (#6187)
- Add `EventName` to `RecordFactory` in `go.opentelemetry.io/otel/log/logtest`. (#6187)
- `AssertRecordEqual` in `go.opentelemetry.io/otel/log/logtest` checks `Record.EventName`. (#6187)

<!-- Released section -->
<!-- Don't change this section unless doing release -->
Expand Down
4 changes: 4 additions & 0 deletions log/logtest/assertions.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ import (
func AssertRecordEqual(t testing.TB, want, got log.Record) bool {
t.Helper()

if want.EventName() != got.EventName() {
t.Errorf("EventName value is not equal:\nwant: %v\ngot: %v", want.EventName(), got.EventName())
return false
}
if !want.Timestamp().Equal(got.Timestamp()) {
t.Errorf("Timestamp value is not equal:\nwant: %v\ngot: %v", want.Timestamp(), got.Timestamp())
return false
Expand Down
5 changes: 3 additions & 2 deletions log/logtest/assertions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ import (
func TestAssertRecord(t *testing.T) {
r1 := log.Record{}
r2 := log.Record{}
now := time.Now()

AssertRecordEqual(t, r1, r2)

now := time.Now()
r1.SetEventName("my_event")
r2.SetEventName("my_event")
r1.SetTimestamp(now)
r2.SetTimestamp(now)
r1.SetObservedTimestamp(now)
Expand Down
2 changes: 2 additions & 0 deletions log/logtest/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
//
// Do not use RecordFactory to create records in production code.
type RecordFactory struct {
EventName string
Timestamp time.Time
ObservedTimestamp time.Time
Severity log.Severity
Expand All @@ -25,6 +26,7 @@ type RecordFactory struct {
// NewRecord returns a log record.
func (b RecordFactory) NewRecord() log.Record {
var record log.Record
record.SetEventName(b.EventName)
record.SetTimestamp(b.Timestamp)
record.SetObservedTimestamp(b.ObservedTimestamp)
record.SetSeverity(b.Severity)
Expand Down
3 changes: 3 additions & 0 deletions log/logtest/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
func TestRecordFactory(t *testing.T) {
now := time.Now()
observed := now.Add(time.Second)
evnt := "my_event"
severity := log.SeverityDebug
severityText := "DBG"
body := log.StringValue("Message")
Expand All @@ -25,6 +26,7 @@ func TestRecordFactory(t *testing.T) {
}

got := RecordFactory{
EventName: evnt,
Timestamp: now,
ObservedTimestamp: observed,
Severity: severity,
Expand All @@ -33,6 +35,7 @@ func TestRecordFactory(t *testing.T) {
Attributes: attrs,
}.NewRecord()

assert.Equal(t, evnt, got.EventName())
assert.Equal(t, now, got.Timestamp())
assert.Equal(t, observed, got.ObservedTimestamp())
assert.Equal(t, severity, got.Severity())
Expand Down
14 changes: 14 additions & 0 deletions log/record.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import (
const attributesInlineCount = 5

// Record represents a log record.
// A log record with non-empty event name is interpreted as an event record.
type Record struct {
// Ensure forward compatibility by explicitly making this not comparable.
noCmp [0]func() //nolint: unused // This is indeed used.

eventName string
timestamp time.Time
observedTimestamp time.Time
severity Severity
Expand All @@ -44,6 +46,18 @@ type Record struct {
back []KeyValue
}

// Event returns the event name.
// A log record with non-empty event name is interpreted as an event record.
func (r *Record) EventName() string {
return r.eventName
}

// SetEventName sets the event name.
// A log record with non-empty event name is interpreted as an event record.
func (r *Record) SetEventName(s string) {
r.eventName = s
}

// Timestamp returns the time when the log record occurred.
func (r *Record) Timestamp() time.Time {
return r.timestamp
Expand Down
8 changes: 8 additions & 0 deletions log/record_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ import (

var y2k = time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC)

func TestRecordEventName(t *testing.T) {
const text = "testing text"

var r log.Record
r.SetEventName(text)
assert.Equal(t, text, r.EventName())
}

func TestRecordTimestamp(t *testing.T) {
var r log.Record
r.SetTimestamp(y2k)
Expand Down

0 comments on commit 185547c

Please sign in to comment.