go-srvc / mods / logmod

github.com/go-srvc/mods/logmod

pkg.go.dev source
go get github.com/go-srvc/mods/logmod@v1.0.2

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")
const ID = "logmod"

Types

type Opt

type Opt func(*Provider) error

type Provider

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

func (*Provider) ID

func (p *Provider) ID() string

func (*Provider) Init

func (p *Provider) Init() error

func (*Provider) Run

func (p *Provider) Run() error

func (*Provider) Stop

func (p *Provider) Stop() error

Examples

ExampleNew

package main

import (
	"github.com/go-srvc/mods/logmod"
	"github.com/go-srvc/srvc"
)

func main() {
	srvc.RunAndExit(
		logmod.New(),
	)
}