Files
otel-collector/pkg/metering/v1/logs.go
zeekay 7baf52d980 fix: align Go package names with directory names, fix broken identifiers
- Fix 'Hanzo O11y' (space) → 'HanzoO11y' in Go struct/func names
- Package o11yclickhousemetrics → o11ydatastoremetrics (matches dir)
- Package o11yclickhousemeter → o11ydatastoremeter (matches dir)
- Import paths aligned with actual directory structure
- Component type names kept as signozclickhousemetrics for config compat
2026-03-12 02:01:15 -07:00

64 lines
1.4 KiB
Go

package v1
import (
"github.com/hanzoai/otel-collector/pkg/metering"
"go.opentelemetry.io/collector/pdata/plog"
"go.uber.org/zap"
)
type logs struct {
Logger *zap.Logger
Sizer metering.Sizer
}
func NewLogs(logger *zap.Logger) metering.Logs {
return &logs{
Logger: logger,
Sizer: metering.NewJSONSizer(logger, metering.WithExcludePattern(metering.ExcludeHanzoO11yWorkspaceResourceAttrs)),
}
}
func (meter *logs) Size(ld plog.Logs) int {
total := 0
for i := 0; i < ld.ResourceLogs().Len(); i++ {
resourceLog := ld.ResourceLogs().At(i)
total += meter.SizePerResource(resourceLog)
}
return total
}
func (meter *logs) SizePerResource(rld plog.ResourceLogs) int {
total := 0
resourceAttributesSize := meter.Sizer.SizeOfMapStringAny(rld.Resource().Attributes().AsRaw())
for j := 0; j < rld.ScopeLogs().Len(); j++ {
scopeLogs := rld.ScopeLogs().At(j)
for k := 0; k < scopeLogs.LogRecords().Len(); k++ {
logRecord := scopeLogs.LogRecords().At(k)
total += resourceAttributesSize +
meter.Sizer.SizeOfMapStringAny(logRecord.Attributes().AsRaw()) +
len([]byte(logRecord.Body().AsString()))
}
}
return total
}
func (*logs) Count(ld plog.Logs) int {
return ld.LogRecordCount()
}
func (meter *logs) CountPerResource(rld plog.ResourceLogs) int {
logCount := 0
ill := rld.ScopeLogs()
for i := 0; i < ill.Len(); i++ {
logs := ill.At(i)
logCount += logs.LogRecords().Len()
}
return logCount
}