diff options
Diffstat (limited to 'internal/cli/logger.go')
-rw-r--r-- | internal/cli/logger.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/cli/logger.go b/internal/cli/logger.go new file mode 100644 index 00000000..4c4f08d3 --- /dev/null +++ b/internal/cli/logger.go @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package cli // import "miniflux.app/v2/internal/cli" + +import ( + "io" + "log/slog" +) + +func InitializeDefaultLogger(logLevel string, logFile io.Writer, logFormat string, logTime bool) error { + var programLogLevel = new(slog.LevelVar) + switch logLevel { + case "debug": + programLogLevel.Set(slog.LevelDebug) + case "info": + programLogLevel.Set(slog.LevelInfo) + case "warning": + programLogLevel.Set(slog.LevelWarn) + case "error": + programLogLevel.Set(slog.LevelError) + } + + logHandlerOptions := &slog.HandlerOptions{Level: programLogLevel} + if !logTime { + logHandlerOptions.ReplaceAttr = func(groups []string, a slog.Attr) slog.Attr { + if a.Key == slog.TimeKey { + return slog.Attr{} + } + + return a + } + } + + var logger *slog.Logger + switch logFormat { + case "json": + logger = slog.New(slog.NewJSONHandler(logFile, logHandlerOptions)) + default: + logger = slog.New(slog.NewTextHandler(logFile, logHandlerOptions)) + } + + slog.SetDefault(logger) + + return nil +} |