receiver/kafkareceiver/internal/unmarshaler/json_logs_unmarshaler.go (22 lines of code) (raw):
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package unmarshaler // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/kafkareceiver/internal/unmarshaler"
import (
"time"
jsoniter "github.com/json-iterator/go"
"go.opentelemetry.io/collector/pdata/pcommon"
"go.opentelemetry.io/collector/pdata/plog"
)
var _ plog.Unmarshaler = JSONLogsUnmarshaler{}
type JSONLogsUnmarshaler struct{}
func (JSONLogsUnmarshaler) UnmarshalLogs(buf []byte) (plog.Logs, error) {
// create a new Logs struct to be populated with log data and returned
p := plog.NewLogs()
// get json logs from the buffer
jsonVal := map[string]any{}
if err := jsoniter.Unmarshal(buf, &jsonVal); err != nil {
return p, err
}
// create a new log record
logRecords := p.ResourceLogs().AppendEmpty().ScopeLogs().AppendEmpty().LogRecords().AppendEmpty()
logRecords.SetObservedTimestamp(pcommon.NewTimestampFromTime(time.Now()))
// Set the unmarshaled jsonVal as the body of the log record
if err := logRecords.Body().SetEmptyMap().FromRaw(jsonVal); err != nil {
return p, err
}
return p, nil
}