receiver/integrationreceiver/internal/metadata/generated_logs.go (57 lines of code) (raw):

// Licensed to Elasticsearch B.V. under one or more contributor // license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright // ownership. Elasticsearch B.V. licenses this file to you under // the Apache License, Version 2.0 (the "License"); you may // not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // Code generated by mdatagen. DO NOT EDIT. package metadata import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" "go.opentelemetry.io/collector/receiver" ) // LogsBuilder provides an interface for scrapers to report logs while taking care of all the transformations // required to produce log representation defined in metadata and user config. type LogsBuilder struct { logsBuffer plog.Logs logRecordsBuffer plog.LogRecordSlice buildInfo component.BuildInfo // contains version information. } // LogBuilderOption applies changes to default logs builder. type LogBuilderOption interface { apply(*LogsBuilder) } func NewLogsBuilder(settings receiver.Settings) *LogsBuilder { lb := &LogsBuilder{ logsBuffer: plog.NewLogs(), logRecordsBuffer: plog.NewLogRecordSlice(), buildInfo: settings.BuildInfo, } return lb } // ResourceLogsOption applies changes to provided resource logs. type ResourceLogsOption interface { apply(plog.ResourceLogs) } type resourceLogsOptionFunc func(plog.ResourceLogs) func (rlof resourceLogsOptionFunc) apply(rl plog.ResourceLogs) { rlof(rl) } // WithLogsResource sets the provided resource on the emitted ResourceLogs. // It's recommended to use ResourceBuilder to create the resource. func WithLogsResource(res pcommon.Resource) ResourceLogsOption { return resourceLogsOptionFunc(func(rl plog.ResourceLogs) { res.CopyTo(rl.Resource()) }) } // AppendLogRecord adds a log record to the logs builder. func (lb *LogsBuilder) AppendLogRecord(lr plog.LogRecord) { lr.MoveTo(lb.logRecordsBuffer.AppendEmpty()) } // EmitForResource saves all the generated logs under a new resource and updates the internal state to be ready for // recording another set of log records as part of another resource. This function can be helpful when one scraper // needs to emit logs from several resources. Otherwise calling this function is not required, // just `Emit` function can be called instead. // Resource attributes should be provided as ResourceLogsOption arguments. func (lb *LogsBuilder) EmitForResource(options ...ResourceLogsOption) { rl := lb.logsBuffer.ResourceLogs().AppendEmpty() ils := rl.ScopeLogs().AppendEmpty() ils.Scope().SetName(ScopeName) ils.Scope().SetVersion(lb.buildInfo.Version) for _, op := range options { op.apply(rl) } if lb.logRecordsBuffer.Len() > 0 { lb.logRecordsBuffer.MoveAndAppendTo(ils.LogRecords()) lb.logRecordsBuffer = plog.NewLogRecordSlice() } } // Emit returns all the logs accumulated by the logs builder and updates the internal state to be ready for // recording another set of logs. This function will be responsible for applying all the transformations required to // produce logs representation defined in metadata and user config. func (lb *LogsBuilder) Emit(options ...ResourceLogsOption) plog.Logs { lb.EmitForResource(options...) logs := lb.logsBuffer lb.logsBuffer = plog.NewLogs() return logs }