repositorypackage
1.2.0
Repository: https://github.com/ginx-contribs/logx.git
Documentation: pkg.go.dev
# Packages
No description provided by the author
# 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")
}