MCPcopy Index your code
hub / github.com/agoda-com/opentelemetry-go

github.com/agoda-com/opentelemetry-go @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
50 symbols 167 edges 18 files 19 documented · 38% 1 cross-repo links updated 15mo agootelslog/v0.3.0 · 2025-02-12★ 33
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Open-telemetry extensions for go language

Open-telemetry Loggers

Logger Version Minimal go version
otelslog v0.3.0 1.22
otelzap v0.3.0 1.22
otelzerolog v0.1.0 1.22

Quick start with open-telemetry loggers

Before configure your logger it is required to configure open-telemetry exporter first:

Export env variable OTEL_EXPORTER_OTLP_ENDPOINT=https://localhost:4318 to your OTLP collector

package main

import (
    "context"
    "github.com/agoda-com/opentelemetry-logs-go/exporters/otlp/otlplogs"
    sdk "github.com/agoda-com/opentelemetry-logs-go/sdk/logs"
    "github.com/agoda-com/otelslog"
    "go.opentelemetry.io/otel/sdk/resource"
    semconv "go.opentelemetry.io/otel/semconv/v1.27.0"
    "log/slog"
    "os"
)

// configure common attributes for all logs
func newResource() *resource.Resource {
    hostName, _ := os.Hostname()
    return resource.NewWithAttributes(
        semconv.SchemaURL,
        semconv.ServiceName("otelslog-example"),
        semconv.ServiceVersion("1.0.0"),
        semconv.HostName(hostName),
    )
}


func main() {

    ctx := context.Background()

    // configure opentelemetry logger provider
    logExporter, _ := otlplogs.NewExporter(ctx)
    loggerProvider := sdk.NewLoggerProvider(
        sdk.WithBatcher(logExporter),
        sdk.WithResource(newResource()),
    )
    // gracefully shutdown logger to flush accumulated signals before program finish
    defer loggerProvider.Shutdown(ctx)

    // configure your logger with logger provider
    ...

    // to have complete example with correlation between logs and tracing start new span
    // see official trace documentation https://github.com/open-telemetry/opentelemetry-go
    tracer := otel.Tracer("my-tracer")
    spanCtx, span := tracer.Start(context.Background(), "My Span")
    defer func() {
        span.End()
    }()

    // now we can call function to execute logs with tracing context
    doSomething(spanCtx)
}

// call function with opentelemetry context provided
func doSomething(ctx context.Context) {
    // log your messages here
    ...
}

See configuration details for every logger

Extension points exported contracts — how you extend this code

Option (FuncType)
Option is a function that applies an option to an OpenTelemetry Core
otelzap/otelzap.go

Core symbols most depended-on inside this repo

Ctx
called by 4
otelzap/logger.go
Enabled
called by 4
otelzap/core.go
otelAttribute
called by 3
otelzap/conv.go
otelAttribute
called by 2
otelslog/conv.go
withGroupPrefix
called by 2
otelslog/otel_handler.go
WithAttrs
called by 2
otelslog/otel_handler.go
WithGroup
called by 2
otelslog/otel_handler.go
NewHook
called by 2
otelzerolog/otelzerolog.go

Shape

Function 26
Method 15
Struct 8
FuncType 1

Languages

Go100%

Modules by API surface

otelslog/otel_handler.go9 symbols
otelzap/logger.go6 symbols
otelzap/core.go6 symbols
otelzerolog/otelzerolog_test.go5 symbols
otelzap/otelzap.go4 symbols
otelzerolog/otelzerolog.go3 symbols
otelzap/global.go3 symbols
otelslog/otel_handler_test.go3 symbols
otelzerolog/level.go2 symbols
otelzap/conv.go2 symbols
otelzerolog/version.go1 symbols
otelzerolog/conv.go1 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add opentelemetry-go \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page