+35
-10
app.go
+35
-10
app.go
···
25
25
return nil, err
26
26
}
27
27
28
-
if outputToFile {
29
-
if lerr := setupLogger(cfg); lerr != nil {
30
-
return nil, lerr
31
-
}
28
+
if lerr := setupLogger(cfg, outputToFile); lerr != nil {
29
+
return nil, lerr
32
30
}
33
31
34
32
store, err := store.NewSQLite(cfg.DBPath)
···
65
63
}, nil
66
64
}
67
65
68
-
func getAuthToken(ctx context.Context, fr *freshrss.Client, db *store.Sqlite, cfg *config.Config) (string, error) {
66
+
func getAuthToken(
67
+
ctx context.Context,
68
+
fr *freshrss.Client,
69
+
db *store.Sqlite,
70
+
cfg *config.Config,
71
+
) (string, error) {
69
72
token, err := db.GetToken(ctx)
70
73
if err == nil {
71
74
return token, nil
···
113
116
return token, nil
114
117
}
115
118
116
-
func setupLogger(cfg *config.Config) error {
117
-
file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666)
118
-
if err != nil {
119
-
return err
119
+
var (
120
+
ErrUnknownLevel = errors.New("unknown log level")
121
+
loggerLevels = map[string]slog.Level{
122
+
"info": slog.LevelInfo,
123
+
"debug": slog.LevelDebug,
124
+
"error": slog.LevelError,
125
+
"warn": slog.LevelWarn,
126
+
}
127
+
)
128
+
129
+
func setupLogger(cfg *config.Config, outputToFile bool) error {
130
+
out := os.Stdout
131
+
if outputToFile {
132
+
file, err := os.OpenFile(cfg.LogFilePath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666)
133
+
if err != nil {
134
+
return err
135
+
}
136
+
out = file
137
+
}
138
+
139
+
logLevel, ok := loggerLevels[cfg.LogLevel]
140
+
if !ok {
141
+
return ErrUnknownLevel
120
142
}
121
-
logger := slog.New(slog.NewTextHandler(file, nil))
143
+
144
+
logger := slog.New(slog.NewTextHandler(out, &slog.HandlerOptions{
145
+
Level: logLevel,
146
+
}))
122
147
slog.SetDefault(logger)
123
148
return nil
124
149
}
+1
internal/config/config.go
+1
internal/config/config.go
+2
internal/config/config.toml
+2
internal/config/config.toml
+4
-1
main.go
+4
-1
main.go
···
78
78
if err := config.Init(); err != nil {
79
79
return fmt.Errorf("failed to init config: %w", err)
80
80
}
81
-
slog.Info("Config was initialized, enter your credentials", "file", config.MustGetConfigFilePath())
81
+
slog.Info(
82
+
"Config was initialized, enter your credentials",
83
+
"file", config.MustGetConfigFilePath(),
84
+
)
82
85
return nil
83
86
}