feat: add log-format flag
This commit is contained in:
parent
c0509bf08c
commit
a370535cc1
2 changed files with 43 additions and 11 deletions
18
cmd/root.go
18
cmd/root.go
|
|
@ -20,8 +20,10 @@ var (
|
|||
var (
|
||||
rootCmd = &cobra.Command{
|
||||
PreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
flags := cmd.Flags()
|
||||
|
||||
var level slog.Level
|
||||
switch str, _ := cmd.Flags().GetString("log-level"); str {
|
||||
switch s, _ := flags.GetString("log-level"); s {
|
||||
case "debug":
|
||||
level = slog.LevelDebug
|
||||
case "info":
|
||||
|
|
@ -32,7 +34,15 @@ var (
|
|||
level = slog.LevelError
|
||||
}
|
||||
|
||||
return logger.Load(level)
|
||||
var format logger.Format
|
||||
switch s, _ := flags.GetString("log-format"); s {
|
||||
case "text":
|
||||
format = logger.FormatText
|
||||
case "json":
|
||||
format = logger.FormatJson
|
||||
}
|
||||
|
||||
return logger.Load(format, level)
|
||||
},
|
||||
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
|
|
@ -77,5 +87,7 @@ var (
|
|||
func init() {
|
||||
flags := rootCmd.Flags()
|
||||
flags.StringP("token", "t", "", "the authentication token")
|
||||
flags.StringP("log-level", "l", "info", "log level")
|
||||
|
||||
flags.String("log-level", "info", "log level")
|
||||
flags.String("log-format", "text", "log format")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,15 @@ import (
|
|||
"github.com/ayn2op/discordo/internal/consts"
|
||||
)
|
||||
|
||||
const fileName = "logs.txt"
|
||||
type Format int
|
||||
|
||||
const (
|
||||
FormatText Format = iota
|
||||
FormatJson
|
||||
)
|
||||
|
||||
// Opens the log file and configures default logger.
|
||||
func Load(level slog.Level) error {
|
||||
func Load(format Format, level slog.Level) error {
|
||||
path, err := os.UserCacheDir()
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -22,13 +27,28 @@ func Load(level slog.Level) error {
|
|||
return err
|
||||
}
|
||||
|
||||
path = filepath.Join(path, fileName)
|
||||
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
opts := &slog.HandlerOptions{AddSource: true, Level: level}
|
||||
|
||||
var h slog.Handler
|
||||
switch format {
|
||||
case FormatText:
|
||||
path := filepath.Join(path, "logs.txt")
|
||||
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
h = slog.NewTextHandler(file, opts)
|
||||
case FormatJson:
|
||||
path := filepath.Join(path, "logs.json")
|
||||
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, os.ModePerm)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
h = slog.NewJSONHandler(file, opts)
|
||||
}
|
||||
|
||||
l := slog.New(slog.NewTextHandler(file, &slog.HandlerOptions{AddSource: true, Level: level}))
|
||||
slog.SetDefault(l)
|
||||
slog.SetDefault(slog.New(h))
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue