Move slogd-colored to other repository
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
- Cleanup dependency imports Signed-off-by: Jan Tytgat <jan.tytgat@corelayer.eu>
This commit is contained in:
@ -11,8 +11,6 @@ import (
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
"git.flexabyte.io/flexabyte/go-slogd/pkg/slogd"
|
||||
|
||||
"git.flexabyte.io/flexabyte/go-kit/pkg/slogd_colored"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -39,7 +37,8 @@ func normalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
|
||||
|
||||
func persistentPreRunFuncE(cmd *cobra.Command, args []string) error {
|
||||
slogd.SetLevel(slogd.Level(logLevelFlag))
|
||||
if slogd.ActiveHandler() == slogd_colored.HandlerColor && noColorFlag {
|
||||
// if slogd.ActiveHandler() == slogd_colored.HandlerColor && noColorFlag {
|
||||
if slogd.ActiveHandler() != slogd.HandlerJSON && noColorFlag {
|
||||
slogd.UseHandler(slogd.HandlerText)
|
||||
cmd.SetContext(slogd.WithContext(cmd.Context()))
|
||||
}
|
||||
|
@ -1,90 +0,0 @@
|
||||
package slogd_colored
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
|
||||
"git.flexabyte.io/flexabyte/go-slogd/pkg/slogd"
|
||||
)
|
||||
|
||||
const (
|
||||
HandlerColor string = "color"
|
||||
)
|
||||
|
||||
type ColouredTextHandler struct {
|
||||
handler slog.Handler
|
||||
w io.Writer
|
||||
mux *sync.Mutex
|
||||
}
|
||||
|
||||
func (h *ColouredTextHandler) Handle(ctx context.Context, r slog.Record) error {
|
||||
var err error
|
||||
levelName := slogd.LevelName(r.Level)
|
||||
|
||||
switch r.Level {
|
||||
case slogd.LevelTrace:
|
||||
levelName = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#FF7F50")).Render(levelName) // coral
|
||||
case slogd.LevelDebug:
|
||||
levelName = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#00FFFF")).Render(levelName) // cyan
|
||||
case slogd.LevelInfo:
|
||||
levelName = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#00FF00")).Render(levelName) // green
|
||||
case slogd.LevelNotice:
|
||||
levelName = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#FFFF00")).Render(levelName) // yellow
|
||||
case slogd.LevelWarn:
|
||||
levelName = lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("#FFA500")).Render(levelName) // orange
|
||||
case slogd.LevelError:
|
||||
levelName = lipgloss.NewStyle().Blink(true).Bold(true).Foreground(lipgloss.Color("#FF0000")).Render(levelName) // red
|
||||
case slogd.LevelFatal:
|
||||
levelName = lipgloss.NewStyle().Blink(true).Bold(true).Foreground(lipgloss.Color("#FF00FF")).Render(levelName) // magenta
|
||||
|
||||
}
|
||||
fields := make(map[string]interface{}, r.NumAttrs())
|
||||
r.Attrs(func(a slog.Attr) bool {
|
||||
fields[a.Key] = a.Value.Any()
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
var fieldStrings []string
|
||||
for k, v := range fields {
|
||||
fieldStrings = append(fieldStrings, k+"="+fmt.Sprintf("%v", v))
|
||||
}
|
||||
|
||||
timeStr := r.Time.Format("[15:05:05.0000]")
|
||||
msg := lipgloss.NewStyle().Foreground(lipgloss.NoColor{}).Render(r.Message) // white
|
||||
|
||||
h.mux.Lock()
|
||||
defer h.mux.Unlock()
|
||||
_, err = h.w.Write([]byte(strings.Join([]string{timeStr, levelName, msg, lipgloss.NewStyle().Foreground(lipgloss.Color("#FFFFFF")).Render(strings.Join(fieldStrings, " "))}, " ") + "\n"))
|
||||
return err
|
||||
}
|
||||
|
||||
func (h *ColouredTextHandler) Enabled(ctx context.Context, level slog.Level) bool {
|
||||
return h.handler.Enabled(ctx, level)
|
||||
}
|
||||
|
||||
func (h *ColouredTextHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
||||
return h.handler.WithAttrs(attrs)
|
||||
}
|
||||
|
||||
func (h *ColouredTextHandler) WithGroup(group string) slog.Handler {
|
||||
return h.handler.WithGroup(group)
|
||||
}
|
||||
|
||||
func NewColoredTextHandler(w io.Writer, opts *slog.HandlerOptions) slog.Handler {
|
||||
return &ColouredTextHandler{
|
||||
handler: slog.NewTextHandler(w, opts),
|
||||
w: w,
|
||||
mux: &sync.Mutex{},
|
||||
}
|
||||
}
|
||||
|
||||
func RegisterColoredTextHandler(w io.Writer, activate bool) {
|
||||
slogd.RegisterSink(HandlerColor, NewColoredTextHandler(w, slogd.HandlerOptions()), activate)
|
||||
}
|
Reference in New Issue
Block a user