4 files changed,
42 insertions(+),
11 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2025-12-28 19:20:24 +0200
Change ID:
nnllpwzqklrumnmtorosvsrrkrumuzkp
Parent:
cadefa6
jump to
| M | app.go |
| M | internal/config/config.go |
| M | internal/config/config.toml |
| M | main.go |
M
app.go
@@ -25,10 +25,8 @@ if err != nil {
return nil, err } - if outputToFile { - if lerr := setupLogger(cfg); lerr != nil { - return nil, lerr - } + if lerr := setupLogger(cfg, outputToFile); lerr != nil { + return nil, lerr } store, err := store.NewSQLite(cfg.DBPath)@@ -65,7 +63,12 @@ freshrssWorker: fw,
}, nil } -func getAuthToken(ctx context.Context, fr *freshrss.Client, db *store.Sqlite, cfg *config.Config) (string, error) { +func getAuthToken( + ctx context.Context, + fr *freshrss.Client, + db *store.Sqlite, + cfg *config.Config, +) (string, error) { token, err := db.GetToken(ctx) if err == nil { return token, nil@@ -113,12 +116,34 @@
return token, nil } -func setupLogger(cfg *config.Config) error { - file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) - if err != nil { - return err +var ( + ErrUnknownLevel = errors.New("unknown log level") + loggerLevels = map[string]slog.Level{ + "info": slog.LevelInfo, + "debug": slog.LevelDebug, + "error": slog.LevelError, + "warn": slog.LevelWarn, + } +) + +func setupLogger(cfg *config.Config, outputToFile bool) error { + out := os.Stdout + if outputToFile { + file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) + if err != nil { + return err + } + out = file + } + + logLevel, ok := loggerLevels[cfg.LogLevel] + if !ok { + return ErrUnknownLevel } - logger := slog.New(slog.NewTextHandler(file, nil)) + + logger := slog.New(slog.NewTextHandler(out, &slog.HandlerOptions{ + Level: logLevel, + })) slog.SetDefault(logger) return nil }
M
internal/config/config.go
@@ -27,6 +27,7 @@ )
type Config struct { DBPath string + LogLevel string `toml:"log_level"` LogFilePath string FreshRSS struct { Host string `toml:"host"`
M
internal/config/config.toml
@@ -1,3 +1,5 @@
+log_level = "info" # or "debug", "error", "warn" + [freshrss] host = "https://example.com/api/greader.php" username = "username"
M
main.go
@@ -78,6 +78,9 @@ func initConfig(ctx context.Context, c *cli.Command) error {
if err := config.Init(); err != nil { return fmt.Errorf("failed to init config: %w", err) } - slog.Info("Config was initialized, enter your credentials", "file", config.MustGetConfigFilePath()) + slog.Info( + "Config was initialized, enter your credentials", + "file", config.MustGetConfigFilePath(), + ) return nil }