Categorygithub.com/ginx-contribs/logx
modulepackage
1.2.0
Repository: https://github.com/ginx-contribs/logx.git
Documentation: pkg.go.dev

# README

logx

logx is a simple logging manager based on slog.Logger, supports multi handler and log cutting.

Install

go get github.com/ginx-contribs/logx@latest

Usage

quick start

package main

import (
	"github.com/ginx-contribs/logx"
	"log"
	"log/slog"
)

func main() {
	logger, err := logx.New()
	if err != nil {
		log.Fatal(err)
	}
	defer logger.Close()

	slog.SetDefault(logger.Slog())
	// 2024-04-05 12:26:13 INFO hell world!
	slog.Info("hell world!")
}

with logx handler

package main

import (
	"github.com/ginx-contribs/logx"
	"log"
	"log/slog"
	"time"
)

func main() {
	// file writer
	writer, err := logx.NewWriter(&logx.WriterOptions{
		Filename:      "./logx.log",
		DisableStderr: true,
	})

	if err != nil {
		log.Fatal(err)
	}

	handler, err := logx.NewHandler(writer, &logx.HandlerOptions{
		Level:      slog.LevelInfo,
		TimeFormat: time.TimeOnly,
	})

	logger, err := logx.New(
		logx.WithHandlers(handler),
	)

	if err != nil {
		log.Fatal(err)
	}

	// register close hooks
	logger.OnClose(func() error {
		return writer.Close()
	})

	defer logger.Close()

	slog.SetDefault(logger.Slog())

	slog.Info("hello world")
}

with multi others handler

package main

import (
	"github.com/ginx-contribs/logx"
	slogsentry "github.com/samber/slog-sentry/v2"
	"log"
	"log/slog"
	"os"
	"time"
)

func main() {
	err := sentry.Init(sentry.ClientOptions{
		Dsn:           "https://[email protected]/zzzzzzz",
		EnableTracing: false,
	})
	if err != nil {
		log.Fatal(err)
	}

	logger, err := logx.New(
		logx.WithHandlers(
			slog.NewJSONHandler(os.Stderr, nil),
			slogsentry.Option{Level: slog.LevelDebug}.NewSentryHandler(),
		),
	)
	if err != nil {
		log.Fatal(err)
	}
	defer logger.Close()

	logger.OnClose(func() error {
		return sentry.Flush(2 * time.Second)
	})

	slog.SetDefault(logger.Slog())

	slog.Info("hello world")
}

# Packages

No description provided by the author

# Functions

Multi distributes records to multiple slog.Handler in parallel.
No description provided by the author
New return a logger with options.
NewFileLogger is a helper function, returns a single handler logger.
NewHandler returns a default log handler, support TEXT and JSON format.
NewWriter returns a new append-only file writer, supporting log cutting.
No description provided by the author

# Constants

No description provided by the author
No description provided by the author
No description provided by the author

# Structs

FileLoggerOption combines with WriterOptions and HandlerOptions.
No description provided by the author
Logger is a slog handler wrapper.
MultiHandler implements slog.Handler interface, holds multiple handlers and call them sequentially.
No description provided by the author
WriterOptions configures the logger writer.

# Type aliases

No description provided by the author