Skip to content

Commit 16df32c

Browse files
authored
feat: Add minimal log level support to OpenTelemetry Core (#11)
1 parent 3c92bfe commit 16df32c

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

otelzap/core.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type otlpCore struct {
3434
logger otel.Logger
3535

3636
fields []zapcore.Field
37+
level zapcore.Level
3738
}
3839

3940
var instrumentationScope = instrumentation.Scope{
@@ -42,8 +43,8 @@ var instrumentationScope = instrumentation.Scope{
4243
SchemaURL: semconv.SchemaURL,
4344
}
4445

45-
func (otlpCore) Enabled(zapcore.Level) bool {
46-
return true
46+
func (c *otlpCore) Enabled(level zapcore.Level) bool {
47+
return c.level.Enabled(level)
4748
}
4849

4950
func (c *otlpCore) With(f []zapcore.Field) zapcore.Core {

otelzap/otelzap.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,29 @@ import (
2222
)
2323

2424
// NewOtelCore creates new OpenTelemetry Core to export logs in OTLP format
25-
func NewOtelCore(loggerProvider otel.LoggerProvider) zapcore.Core {
25+
func NewOtelCore(loggerProvider otel.LoggerProvider, opts ...Option) zapcore.Core {
2626
logger := loggerProvider.Logger(
2727
instrumentationScope.Name,
2828
otel.WithInstrumentationVersion(instrumentationScope.Version),
2929
)
3030

31-
return &otlpCore{
31+
c := &otlpCore{
3232
logger: logger,
33+
level: zapcore.InfoLevel,
3334
}
35+
for _, apply := range opts {
36+
apply(c)
37+
}
38+
39+
return c
40+
}
41+
42+
// Option is a function that applies an option to an OpenTelemetry Core
43+
type Option func(c *otlpCore)
44+
45+
// WithLevel sets the minimum level for the OpenTelemetry Core log to be exported
46+
func WithLevel(level zapcore.Level) Option {
47+
return Option(func(c *otlpCore) {
48+
c.level = level
49+
})
3450
}

0 commit comments

Comments
 (0)