# 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