rano/util/logger/logger.go

57 lines
1.1 KiB
Go
Raw Normal View History

2024-11-18 20:53:13 +05:30
// Copyright 2024 Patial Tech. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
2024-11-01 19:55:30 +05:30
package logger
import (
2024-11-17 22:28:29 +05:30
"context"
2024-11-01 19:55:30 +05:30
"fmt"
"log/slog"
2024-11-10 14:52:33 +05:30
"os"
2024-11-01 19:55:30 +05:30
)
func Info(msg string, args ...any) {
a, b := getArgs(args)
slog.Info(fmt.Sprintf(msg, a...), b...)
}
func Warn(msg string, args ...any) {
a, b := getArgs(args)
slog.Warn(fmt.Sprintf(msg, a...), b...)
}
2024-11-17 22:28:29 +05:30
func Incident(ctx context.Context, name, msg string, args ...any) {
a, b := getArgs(args)
slog.Warn(fmt.Sprintf(msg, a...), b...)
// TODO: save incident for alert purpose
}
2024-11-01 19:55:30 +05:30
func Error(err error, args ...any) {
a, b := getArgs(args)
slog.Error(fmt.Sprintf(err.Error(), a...), b...)
// TODO: save error log for later scrutiny
}
2024-11-10 14:52:33 +05:30
// Fatal error will exit with os.Exit(1)
func Fatal(msg string, args ...any) {
a, b := getArgs(args)
slog.Error(fmt.Sprintf(msg, a...), b...)
os.Exit(1)
}
2024-11-01 19:55:30 +05:30
func getArgs(args []any) ([]any, []any) {
var a []any
var b []any
for _, arg := range args {
switch arg.(type) {
case slog.Attr:
b = append(b, arg)
default:
a = append(a, arg)
}
}
2024-11-01 19:55:30 +05:30
return a, b
}