in internal/telemetrygen/logs/worker.go [37:77]
func (w worker) simulateLogs(res *resource.Resource, exporter exporter, telemetryAttributes []attribute.KeyValue) {
limiter := rate.NewLimiter(w.limitPerSecond, 1)
var i int64
for w.running.Load() {
logs := plog.NewLogs()
nRes := logs.ResourceLogs().AppendEmpty().Resource()
attrs := res.Attributes()
for _, attr := range attrs {
nRes.Attributes().PutStr(string(attr.Key), attr.Value.AsString())
}
log := logs.ResourceLogs().At(0).ScopeLogs().AppendEmpty().LogRecords().AppendEmpty()
log.Body().SetStr(w.body)
log.SetTimestamp(pcommon.NewTimestampFromTime(time.Now()))
log.SetDroppedAttributesCount(1)
log.SetSeverityNumber(plog.SeverityNumberInfo)
log.SetSeverityText("Info")
log.Attributes()
lattrs := log.Attributes()
lattrs.PutStr("app", "server")
for i, key := range telemetryAttributes {
lattrs.PutStr(key.Value.AsString(), telemetryAttributes[i].Value.AsString())
}
if err := exporter.export(logs); err != nil {
w.logger.Fatal("exporter failed", zap.Error(err))
}
if err := limiter.Wait(context.Background()); err != nil {
w.logger.Fatal("limiter wait failed, retry", zap.Error(err))
}
i++
if w.numLogs != 0 && i >= int64(w.numLogs) {
break
}
}
w.logger.Info("logs generated", zap.Int64("logs", i))
w.wg.Done()
}