logger

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2026 License: Apache-2.0 Imports: 31 Imported by: 0

README

Logger Package

This package provides JSON structured logging using zerolog. It offers:

  • JSON-formatted log output
  • Configurable log levels
  • Easy debug mode toggling
  • Component-based logging
  • Field-based enrichment
  • OpenTelemetry (OTel) log export to collectors

Quick Start

Basic Usage
package main

import "github.com/carverauto/serviceradar/pkg/logger"

func main() {
    // Initialize with defaults (reads from environment variables)
    err := logger.InitWithDefaults()
    if err != nil {
        panic(err)
    }

    logger.Info().Msg("Application started")
    logger.Debug().Str("version", "1.0.0").Msg("Debug information")
}
Custom Configuration
config := logger.Config{
    Level:      "debug",
    Debug:      true,
    Output:     "stdout",
    TimeFormat: "",
    OTel: logger.OTelConfig{
        Enabled:      true,
        Endpoint:     "localhost:4317",
        ServiceName:  "my-service",
        BatchTimeout: 5 * time.Second,
        Insecure:     true,
    },
}

err := logger.Init(config)
if err != nil {
    panic(err)
}

// Always call Shutdown to flush any pending logs
defer logger.Shutdown()
Component-based Logging
serviceLogger := logger.WithComponent("user-service")
serviceLogger.Info().
    Int("user_id", 12345).
    Str("action", "login").
    Msg("User authenticated")
Field Logger Interface
baseLogger := logger.GetLogger()
fieldLogger := logger.NewFieldLogger(baseLogger)

userLogger := fieldLogger.WithField("user_id", 12345)
userLogger.Info("User operation completed")

// With error
err := errors.New("connection failed")
userLogger.WithError(err).Error("Operation failed")

Configuration

The logger can be configured through:

  1. Config struct:

    • Level: Log level (trace, debug, info, warn, error, fatal, panic)
    • Debug: Boolean to enable debug mode
    • Output: Output destination (stdout, stderr)
    • TimeFormat: Custom time format (empty uses RFC3339)
    • OTel: OpenTelemetry configuration
  2. Environment variables:

    • LOG_LEVEL: Set log level
    • DEBUG: Enable debug mode (true/false/1/0/yes/no/on/off)
    • LOG_OUTPUT: Set output destination
    • LOG_TIME_FORMAT: Custom time format
  3. OpenTelemetry Environment Variables (following OTel conventions):

    • OTEL_LOGS_ENABLED: Enable/disable OTel log export
    • OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: OTel collector endpoint (e.g., localhost:4317)
    • OTEL_EXPORTER_OTLP_LOGS_HEADERS: Headers for authentication (e.g., Authorization=Bearer token)
    • OTEL_SERVICE_NAME: Service name for resource attribution
    • OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: Batch export timeout
    • OTEL_EXPORTER_OTLP_LOGS_INSECURE: Use insecure connection

Log Levels

  • trace: Very detailed information
  • debug: Debug information (only visible when debug mode is enabled)
  • info: General information (default level)
  • warn: Warning messages
  • error: Error messages
  • fatal: Fatal errors (calls os.Exit)
  • panic: Panic messages (calls panic)

Debug Mode

Debug mode can be toggled at runtime:

logger.SetDebug(true)   // Enable debug logging
logger.SetDebug(false)  // Disable debug logging

JSON Output Format

All logs are output in JSON format with these standard fields:

{
  "level": "info",
  "time": "2025-01-10T10:30:00Z",
  "message": "User authenticated",
  "component": "user-service",
  "user_id": 12345
}

Best Practices

  1. Use component loggers for different parts of your application
  2. Add structured fields rather than formatting messages
  3. Use appropriate log levels - avoid logging sensitive information
  4. Initialize once at application startup
  5. Use field loggers for consistent field inclusion across related operations

OpenTelemetry Integration

The logger supports exporting logs to OpenTelemetry collectors for centralized observability.

Basic OTel Setup
// Using environment variables (recommended)
os.Setenv("OTEL_LOGS_ENABLED", "true")
os.Setenv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT", "localhost:4317")
os.Setenv("OTEL_SERVICE_NAME", "my-service")

config := logger.DefaultConfig()
err := logger.Init(config)
if err != nil {
    panic(err)
}

// Important: Always call Shutdown to flush pending logs
defer logger.Shutdown()

logger.Info().Str("user_id", "123").Msg("User logged in")
OTel with Authentication
config := logger.Config{
    Level: "info",
    OTel: logger.OTelConfig{
        Enabled:     true,
        Endpoint:    "https://otel-collector.example.com:4317",
        ServiceName: "serviceradar",
        Headers: map[string]string{
            "Authorization": "Bearer your-token",
            "X-API-Key":     "your-api-key",
        },
        BatchTimeout: 10 * time.Second,
        Insecure:     false, // Use TLS
    },
}

err := logger.Init(config)
if err != nil {
    panic(err)
}
defer logger.Shutdown()
OTel with TLS Client Certificates
config := logger.Config{
    Level: "info",
    OTel: logger.OTelConfig{
        Enabled:      true,
        Endpoint:     "otel-collector.example.com:4317",
        ServiceName:  "serviceradar",
        BatchTimeout: 10 * time.Second,
        Insecure:     false,
        TLS: &logger.TLSConfig{
            CertFile: "/path/to/client.crt",
            KeyFile:  "/path/to/client.key",
            CAFile:   "/path/to/ca.crt", // Optional: custom CA certificate
        },
    },
}

err := logger.Init(config)
if err != nil {
    panic(err)
}
defer logger.Shutdown()
OTel Environment Variables with TLS
# Enable OTel logging
export OTEL_LOGS_ENABLED=true
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=otel-collector.example.com:4317
export OTEL_SERVICE_NAME=serviceradar

# TLS Configuration (configure in code as shown above)
# Environment variables for TLS certificates are not currently supported
# Use the TLS config struct in your logger.Config instead
OTel Features
  • Dual Output: Logs go to both console AND OTel collector

  • Structured Fields: All zerolog fields are preserved in OTel

  • Log Levels: Properly mapped to OTel severity levels

  • Batching: Efficient batch export with configurable timeouts

  • Error Handling: Graceful fallback if collector is unavailable

  • Resource Attribution: Service name and version automatically included

  • OTLP: Standard endpoint localhost:4317 (gRPC) or localhost:4318 (HTTP)

Thread Safety

The logger is thread-safe and can be used concurrently across goroutines.

Documentation

Overview

Package logger provides JSON structured logging using zerolog

Package logger is a generated GoMock package.

Example (OtelConfiguration)
package main

import (
	"time"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	config := &logger.Config{
		Level:      "debug",
		Debug:      true,
		Output:     "stdout",
		TimeFormat: "",
		OTel: logger.OTelConfig{
			Enabled:      true,
			Endpoint:     "localhost:4317",
			ServiceName:  "my-service",
			BatchTimeout: logger.Duration(5 * time.Second),
			Insecure:     true,
			Headers: map[string]string{
				"Authorization": "Bearer token123",
			},
		},
	}

	if config.OTel.Enabled {
		logger.Info().Msg("OTel logging is enabled")
	}
}
Example (OtelEnvironmentVariables)
package main

import (
	"context"
	"os"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	_ = os.Setenv("OTEL_LOGS_ENABLED", "true")
	_ = os.Setenv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT", "localhost:4317")
	_ = os.Setenv("OTEL_SERVICE_NAME", "serviceradar")
	_ = os.Setenv("OTEL_EXPORTER_OTLP_LOGS_HEADERS", "Authorization=Bearer token123,X-API-Key=abc123")
	_ = os.Setenv("OTEL_EXPORTER_OTLP_LOGS_INSECURE", "true")

	config := logger.DefaultConfig()

	err := logger.Init(context.Background(), config)
	if err != nil {
		panic(err)
	}

	defer func() {
		if err := logger.Shutdown(); err != nil {
			panic(err)
		}
	}()

	logger.Info().
		Str("user_id", "12345").
		Str("operation", "login").
		Msg("User authenticated successfully")

	logger.Error().
		Str("error", "connection timeout").
		Int("retry_count", 3).
		Msg("Failed to connect to database")
}
Example (OtelGracefulShutdown)
package main

import (
	"context"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	defer func() {
		if err := logger.Shutdown(); err != nil {
			logger.Error().Err(err).Msg("Failed to shutdown logger")
		}
	}()

	config := &logger.Config{
		Level:  "info",
		Output: "stdout",
		OTel: logger.OTelConfig{
			Enabled:     true,
			Endpoint:    "localhost:4317",
			ServiceName: "my-service",
			Insecure:    true,
		},
	}

	err := logger.Init(context.Background(), config)
	if err != nil {
		panic(err)
	}

	logger.Info().Msg("Application shutting down")
}
Example (OtelWithoutCollector)
package main

import (
	"context"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	config := &logger.Config{
		Level:  "info",
		Output: "stdout",
		OTel: logger.OTelConfig{
			Enabled: false,
		},
	}

	err := logger.Init(context.Background(), config)
	if err != nil {
		panic(err)
	}

	logger.Info().Msg("This will only go to stdout, not to OTel collector")
}
Example (UsageInService)
package main

import (
	"errors"
	"fmt"

	"github.com/carverauto/serviceradar/pkg/logger"
)

// Test errors - static errors for err113 compliance
var errInvalidUserID = errors.New("invalid user ID")

func main() {
	serviceLogger := logger.WithComponent("user-service")

	userID := 12345
	email := "user@example.com"

	serviceLogger.Info().
		Int("user_id", userID).
		Str("email", email).
		Msg("Processing user registration")

	if err := processUser(userID); err != nil {
		serviceLogger.Error().
			Err(err).
			Int("user_id", userID).
			Msg("Failed to process user")
	}

	serviceLogger.Info().
		Int("user_id", userID).
		Msg("User registration completed successfully")
}

func processUser(userID int) error {
	if userID <= 0 {
		return fmt.Errorf("invalid user ID: %d: %w", userID, errInvalidUserID)
	}

	return nil
}

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	ErrOTelLoggingDisabled  = errors.New("OTel logging is disabled")
	ErrOTelEndpointRequired = errors.New("OTel endpoint is required when enabled")
)

Static errors for err113 compliance

View Source
var (
	ErrInvalidDurationType = errors.New("invalid duration type")
)

Static errors for err113 compliance

View Source
var ErrOTelMetricsDisabled = errors.New("OTel metrics exporter disabled")

Static errors to match err113 guidance.

Functions

func Debug

func Debug() *zerolog.Event

func Error

func Error() *zerolog.Event

func Fatal

func Fatal() *zerolog.Event

func GetLogger

func GetLogger() zerolog.Logger

func GetTracer

func GetTracer(name string) otelTrace.Tracer

GetTracer returns a tracer for the given name. This is a convenience function that calls otel.Tracer(). InitializeTracing must be called first to set up the global TracerProvider.

func Info

func Info() *zerolog.Event

func Init

func Init(ctx context.Context, config *Config) error
Example
package main

import (
	"context"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	config := &logger.Config{
		Level:      "debug",
		Debug:      true,
		Output:     "stdout",
		TimeFormat: "",
	}

	err := logger.Init(context.Background(), config)
	if err != nil {
		panic(err)
	}

	logger.Info().Str("component", "example").Msg("Logger initialized successfully")
}

func InitWithDefaults

func InitWithDefaults(ctx context.Context) error
Example
package main

import (
	"context"

	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	err := logger.InitWithDefaults(context.Background())
	if err != nil {
		panic(err)
	}

	logger.Info().Msg("Logger initialized with defaults")
}

func InitializeMetrics added in v1.0.55

func InitializeMetrics(ctx context.Context, config MetricsConfig) (*sdkmetric.MeterProvider, error)

InitializeMetrics configures the global MeterProvider and wires an OTLP exporter so in-process instruments (identity map metrics etc.) are delivered to the collector.

It is safe to call this multiple times; subsequent calls will return the already initialised provider. If metrics exporting is disabled it returns ErrOTelMetricsDisabled.

func InitializeTracing

func InitializeTracing(ctx context.Context, config TracingConfig) (*trace.TracerProvider, context.Context, otelTrace.Span, error)

InitializeTracing sets up OpenTelemetry tracing and returns a traced context with a root span. This should be called once at application startup.

Returns:

  • *trace.TracerProvider: The tracer provider (caller should defer tp.Shutdown())
  • context.Context: A context containing the root span
  • otelTrace.Span: The root span (caller should defer span.End())
  • error: Any initialization error

Example usage:

tp, ctx, rootSpan, err := logger.InitializeTracing(context.Background(), logger.TracingConfig{
    ServiceName:    "my-service",
    ServiceVersion: "1.0.0",
    Debug:          true,
    OTel:           &config.Logging.OTel,
})
if err != nil {
    return err
}
defer func() { tp.Shutdown(context.Background()) }()
defer rootSpan.End()

func Panic

func Panic() *zerolog.Event

func SetDebug

func SetDebug(debug bool)
Example
package main

import (
	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	logger.SetDebug(true)
	logger.Debug().Msg("This debug message will be visible")

	logger.SetDebug(false)
	logger.Debug().Msg("This debug message will be hidden")
	logger.Info().Msg("This info message will still be visible")
}

func SetLevel

func SetLevel(level zerolog.Level)

func Shutdown

func Shutdown() error

func ShutdownOTEL

func ShutdownOTEL() error

func Trace added in v1.0.55

func Trace() *zerolog.Event

func Warn

func Warn() *zerolog.Event

func With

func With() zerolog.Context

func WithComponent

func WithComponent(component string) zerolog.Logger
Example
package main

import (
	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	componentLogger := logger.WithComponent("database")

	componentLogger.Info().
		Str("table", "users").
		Int("count", 150).
		Msg("Query executed successfully")
}

func WithFields

func WithFields(fields map[string]interface{}) zerolog.Logger
Example
package main

import (
	"github.com/carverauto/serviceradar/pkg/logger"
)

func main() {
	fields := map[string]interface{}{
		"user_id":    12345,
		"session_id": "abc-123-def",
		"ip_address": "192.168.1.100",
	}

	enrichedLogger := logger.WithFields(fields)
	enrichedLogger.Info().Msg("User logged in")
}

Types

type Config

type Config struct {
	Level      string     `json:"level" yaml:"level"`
	Debug      bool       `json:"debug" yaml:"debug"`
	Output     string     `json:"output" yaml:"output"`
	TimeFormat string     `json:"time_format" yaml:"time_format"`
	OTel       OTelConfig `json:"otel" yaml:"otel"`
}

func DefaultConfig

func DefaultConfig() *Config

type Duration

type Duration time.Duration

Duration is a custom type that can unmarshal duration strings from JSON

func (*Duration) UnmarshalJSON

func (d *Duration) UnmarshalJSON(b []byte) error

UnmarshalJSON implements json.Unmarshaler for Duration

type FieldLogger

type FieldLogger interface {
	WithField(key string, value interface{}) FieldLogger
	WithFields(fields map[string]interface{}) FieldLogger
	WithError(err error) FieldLogger
	Trace(msg string)
	Debug(msg string)
	Info(msg string)
	Warn(msg string)
	Error(msg string)
	Fatal(msg string)
	Panic(msg string)
}
Example
package main

import (
	"errors"

	"github.com/carverauto/serviceradar/pkg/logger"
)

// Test errors - static errors for err113 compliance
var errDatabaseConnection = errors.New("database connection failed")

func main() {
	baseLogger := logger.GetLogger()
	fieldLogger := logger.NewFieldLogger(&baseLogger)

	userLogger := fieldLogger.WithField("user_id", 12345)
	userLogger.Info("User authenticated")

	err := errDatabaseConnection
	userLogger.WithError(err).Error("Failed to save user data")
}

func NewFieldLogger

func NewFieldLogger(logger *zerolog.Logger) FieldLogger

type Logger

type Logger interface {
	Trace() *zerolog.Event
	Debug() *zerolog.Event
	Info() *zerolog.Event
	Warn() *zerolog.Event
	Error() *zerolog.Event
	Fatal() *zerolog.Event
	Panic() *zerolog.Event
	With() zerolog.Context
	WithComponent(component string) zerolog.Logger
	WithFields(fields map[string]interface{}) zerolog.Logger
	SetLevel(level zerolog.Level)
	SetDebug(debug bool)
}

func NewTestLogger

func NewTestLogger() Logger

NewTestLogger creates a no-op logger for testing that discards all output

type LoggerInstance

type LoggerInstance struct {
	// contains filtered or unexported fields
}

LoggerInstance holds the global logger state

type MetricsConfig added in v1.0.55

type MetricsConfig struct {
	ServiceName    string
	ServiceVersion string
	OTel           *OTelConfig
	// ExportInterval controls how often metric data is flushed to the OTLP collector.
	// When zero, the default interval of 15 seconds is used.
	ExportInterval time.Duration
}

type MockFieldLogger

type MockFieldLogger struct {
	// contains filtered or unexported fields
}

MockFieldLogger is a mock of FieldLogger interface.

func NewMockFieldLogger

func NewMockFieldLogger(ctrl *gomock.Controller) *MockFieldLogger

NewMockFieldLogger creates a new mock instance.

func (*MockFieldLogger) Debug

func (m *MockFieldLogger) Debug(msg string)

Debug mocks base method.

func (*MockFieldLogger) EXPECT

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockFieldLogger) Error

func (m *MockFieldLogger) Error(msg string)

Error mocks base method.

func (*MockFieldLogger) Fatal

func (m *MockFieldLogger) Fatal(msg string)

Fatal mocks base method.

func (*MockFieldLogger) Info

func (m *MockFieldLogger) Info(msg string)

Info mocks base method.

func (*MockFieldLogger) Panic

func (m *MockFieldLogger) Panic(msg string)

Panic mocks base method.

func (*MockFieldLogger) Trace added in v1.0.55

func (m *MockFieldLogger) Trace(msg string)

Trace mocks base method.

func (*MockFieldLogger) Warn

func (m *MockFieldLogger) Warn(msg string)

Warn mocks base method.

func (*MockFieldLogger) WithError

func (m *MockFieldLogger) WithError(err error) FieldLogger

WithError mocks base method.

func (*MockFieldLogger) WithField

func (m *MockFieldLogger) WithField(key string, value any) FieldLogger

WithField mocks base method.

func (*MockFieldLogger) WithFields

func (m *MockFieldLogger) WithFields(fields map[string]any) FieldLogger

WithFields mocks base method.

type MockFieldLoggerMockRecorder

type MockFieldLoggerMockRecorder struct {
	// contains filtered or unexported fields
}

MockFieldLoggerMockRecorder is the mock recorder for MockFieldLogger.

func (*MockFieldLoggerMockRecorder) Debug

func (mr *MockFieldLoggerMockRecorder) Debug(msg any) *gomock.Call

Debug indicates an expected call of Debug.

func (*MockFieldLoggerMockRecorder) Error

func (mr *MockFieldLoggerMockRecorder) Error(msg any) *gomock.Call

Error indicates an expected call of Error.

func (*MockFieldLoggerMockRecorder) Fatal

func (mr *MockFieldLoggerMockRecorder) Fatal(msg any) *gomock.Call

Fatal indicates an expected call of Fatal.

func (*MockFieldLoggerMockRecorder) Info

func (mr *MockFieldLoggerMockRecorder) Info(msg any) *gomock.Call

Info indicates an expected call of Info.

func (*MockFieldLoggerMockRecorder) Panic

func (mr *MockFieldLoggerMockRecorder) Panic(msg any) *gomock.Call

Panic indicates an expected call of Panic.

func (*MockFieldLoggerMockRecorder) Trace added in v1.0.55

func (mr *MockFieldLoggerMockRecorder) Trace(msg any) *gomock.Call

Trace indicates an expected call of Trace.

func (*MockFieldLoggerMockRecorder) Warn

func (mr *MockFieldLoggerMockRecorder) Warn(msg any) *gomock.Call

Warn indicates an expected call of Warn.

func (*MockFieldLoggerMockRecorder) WithError

func (mr *MockFieldLoggerMockRecorder) WithError(err any) *gomock.Call

WithError indicates an expected call of WithError.

func (*MockFieldLoggerMockRecorder) WithField

func (mr *MockFieldLoggerMockRecorder) WithField(key, value any) *gomock.Call

WithField indicates an expected call of WithField.

func (*MockFieldLoggerMockRecorder) WithFields

func (mr *MockFieldLoggerMockRecorder) WithFields(fields any) *gomock.Call

WithFields indicates an expected call of WithFields.

type MockLogger

type MockLogger struct {
	// contains filtered or unexported fields
}

MockLogger is a mock of Logger interface.

func NewMockLogger

func NewMockLogger(ctrl *gomock.Controller) *MockLogger

NewMockLogger creates a new mock instance.

func (*MockLogger) Debug

func (m *MockLogger) Debug() *zerolog.Event

Debug mocks base method.

func (*MockLogger) EXPECT

func (m *MockLogger) EXPECT() *MockLoggerMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockLogger) Error

func (m *MockLogger) Error() *zerolog.Event

Error mocks base method.

func (*MockLogger) Fatal

func (m *MockLogger) Fatal() *zerolog.Event

Fatal mocks base method.

func (*MockLogger) Info

func (m *MockLogger) Info() *zerolog.Event

Info mocks base method.

func (*MockLogger) Panic

func (m *MockLogger) Panic() *zerolog.Event

Panic mocks base method.

func (*MockLogger) SetDebug

func (m *MockLogger) SetDebug(debug bool)

SetDebug mocks base method.

func (*MockLogger) SetLevel

func (m *MockLogger) SetLevel(level zerolog.Level)

SetLevel mocks base method.

func (*MockLogger) Trace added in v1.0.55

func (m *MockLogger) Trace() *zerolog.Event

Trace mocks base method.

func (*MockLogger) Warn

func (m *MockLogger) Warn() *zerolog.Event

Warn mocks base method.

func (*MockLogger) With

func (m *MockLogger) With() zerolog.Context

With mocks base method.

func (*MockLogger) WithComponent

func (m *MockLogger) WithComponent(component string) zerolog.Logger

WithComponent mocks base method.

func (*MockLogger) WithFields

func (m *MockLogger) WithFields(fields map[string]any) zerolog.Logger

WithFields mocks base method.

type MockLoggerMockRecorder

type MockLoggerMockRecorder struct {
	// contains filtered or unexported fields
}

MockLoggerMockRecorder is the mock recorder for MockLogger.

func (*MockLoggerMockRecorder) Debug

func (mr *MockLoggerMockRecorder) Debug() *gomock.Call

Debug indicates an expected call of Debug.

func (*MockLoggerMockRecorder) Error

func (mr *MockLoggerMockRecorder) Error() *gomock.Call

Error indicates an expected call of Error.

func (*MockLoggerMockRecorder) Fatal

func (mr *MockLoggerMockRecorder) Fatal() *gomock.Call

Fatal indicates an expected call of Fatal.

func (*MockLoggerMockRecorder) Info

func (mr *MockLoggerMockRecorder) Info() *gomock.Call

Info indicates an expected call of Info.

func (*MockLoggerMockRecorder) Panic

func (mr *MockLoggerMockRecorder) Panic() *gomock.Call

Panic indicates an expected call of Panic.

func (*MockLoggerMockRecorder) SetDebug

func (mr *MockLoggerMockRecorder) SetDebug(debug any) *gomock.Call

SetDebug indicates an expected call of SetDebug.

func (*MockLoggerMockRecorder) SetLevel

func (mr *MockLoggerMockRecorder) SetLevel(level any) *gomock.Call

SetLevel indicates an expected call of SetLevel.

func (*MockLoggerMockRecorder) Trace added in v1.0.55

func (mr *MockLoggerMockRecorder) Trace() *gomock.Call

Trace indicates an expected call of Trace.

func (*MockLoggerMockRecorder) Warn

func (mr *MockLoggerMockRecorder) Warn() *gomock.Call

Warn indicates an expected call of Warn.

func (*MockLoggerMockRecorder) With

func (mr *MockLoggerMockRecorder) With() *gomock.Call

With indicates an expected call of With.

func (*MockLoggerMockRecorder) WithComponent

func (mr *MockLoggerMockRecorder) WithComponent(component any) *gomock.Call

WithComponent indicates an expected call of WithComponent.

func (*MockLoggerMockRecorder) WithFields

func (mr *MockLoggerMockRecorder) WithFields(fields any) *gomock.Call

WithFields indicates an expected call of WithFields.

type MultiWriter

type MultiWriter struct {
	// contains filtered or unexported fields
}

func NewMultiWriter

func NewMultiWriter(writers ...io.Writer) *MultiWriter

func (*MultiWriter) Write

func (mw *MultiWriter) Write(p []byte) (n int, err error)

type OTelConfig

type OTelConfig struct {
	Enabled      bool              `json:"enabled" yaml:"enabled"`
	Endpoint     string            `json:"endpoint" yaml:"endpoint"`
	Headers      map[string]string `json:"headers" yaml:"headers"`
	ServiceName  string            `json:"service_name" yaml:"service_name"`
	BatchTimeout Duration          `json:"batch_timeout" yaml:"batch_timeout"`
	Insecure     bool              `json:"insecure" yaml:"insecure"`
	TLS          *TLSConfig        `json:"tls,omitempty" yaml:"tls,omitempty"`
}

func DefaultOTelConfig

func DefaultOTelConfig() OTelConfig

type OTelWriter

type OTelWriter struct {
	// contains filtered or unexported fields
}

func NewOTELWriter

func NewOTELWriter(ctx context.Context, config OTelConfig) (*OTelWriter, error)

func (*OTelWriter) Write

func (w *OTelWriter) Write(p []byte) (n int, err error)

type TLSConfig

type TLSConfig struct {
	CertFile string `json:"cert_file" yaml:"cert_file"`
	KeyFile  string `json:"key_file" yaml:"key_file"`
	CAFile   string `json:"ca_file,omitempty" yaml:"ca_file,omitempty"`
}

type TracingConfig

type TracingConfig struct {
	ServiceName    string
	ServiceVersion string
	Debug          bool
	Logger         Logger      // Optional logger for debug output
	OTel           *OTelConfig // Optional OTel configuration for trace exporting
}

TracingConfig holds the configuration for OpenTelemetry tracing setup

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL