github.com/go-srvc/mods/logmod
go get github.com/go-srvc/mods/logmod@v1.16.0
README
logmod
logmod exports logs to the otel endpoint and flushes log buffers before the application exits. After logmod.New() runs, slog calls are routed through the otelslog bridge.
package main
import (
"fmt"
"log/slog"
"net/http"
"os"
"github.com/go-srvc/mods/httpmod"
"github.com/go-srvc/mods/logmod"
"github.com/go-srvc/mods/sigmod"
"github.com/go-srvc/srvc"
)
func main() {
srvc.RunAndExit(
logmod.New(),
sigmod.New(os.Interrupt),
httpmod.New(
httpmod.WithAddr(":8080"),
httpmod.WithHandler(http.HandlerFunc(hello)),
),
)
}
func hello(w http.ResponseWriter, r *http.Request) {
slog.InfoContext(r.Context(), "request", "path", r.URL.Path)
fmt.Fprint(w, "ok")
}
Overview
Package logmod provides OpenTelemetry log provider as a module.
Constants
const (
ErrMissingProvider = errStr("log provider not set")
ErrFlushFailed = errStr("failed to flush remaining logs")
)const ID = "logmod"Types
type Opt
type Opt func(*Provider) errorfunc WithEnv
func WithEnv() OptWithEnv uses OTEL_EXPORTER_OTLP_LOGS_PROTOCOL and OTEL_EXPORTER_OTLP_PROTOCOL environment variable to set exporter. Accepted values are:
- http/protobuf
- grpc
- stdout
If no value is provided, stdout is used.
func WithGRPC
func WithGRPC() OptWithGRPC creates log provider with batch processor using grpc exporter from OTEL_* env configs. Env variables: https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc
func WithHTTP
func WithHTTP() OptWithHTTP creates log provider with batch processor using http exporter from OTEL_* env configs. Env variables: https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp
func WithProvider
func WithProvider(exp *log.LoggerProvider) OptWithProvider sets the underlying log provider for module.
func WithProviderFn
func WithProviderFn(fn func() (*log.LoggerProvider, error)) OptWithProviderFn sets the underlying log provider for module using given function.
func WithStdout
func WithStdout(opt ...stdoutlog.Option) OptWithStdout creates log provider with stdout exporter.
type Provider
type Provider struct {
// contains filtered or unexported fields
}func New
func New(opts ...Opt) *ProviderNew creates log provider module with sane defaults if no options are provided. Default options are: WithEnv. For instructions on how to integrate log provider with logger of your choice, see the list of ready made bridge libraries: https://opentelemetry.io/ecosystem/registry/?language=go&component=log-bridge
func (*Provider) ID
func (p *Provider) ID() stringfunc (*Provider) Init
func (p *Provider) Init() errorfunc (*Provider) Run
func (p *Provider) Run() errorfunc (*Provider) Stop
func (p *Provider) Stop() errorExamples
ExampleNew
package main
import (
"github.com/go-srvc/mods/logmod"
"github.com/go-srvc/srvc"
)
func main() {
srvc.RunAndExit(
logmod.New(),
)
}