func()

in fast-build-update-tool/internal/config/logger.go [67:90]


func (a *ApplicationLogger) initializeSlog(verbose bool) (err error) {
	var handler slog.Handler

	if verbose {
		if a.logFile == nil {
			// If we have verbose logs, use the default slog.TextHandler, and write everything to STDOUT, and a log file
			a.logFile, err = os.OpenFile(filepath.Join(a.logsDir, logFileName), os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
			if err != nil {
				return fmt.Errorf("error creating log file %w", err)
			}
		}

		level := &slog.LevelVar{}
		level.Set(slog.LevelDebug)
		handler = slog.NewTextHandler(io.MultiWriter(a.logFile, os.Stdout), &slog.HandlerOptions{Level: level})
	} else {
		// Otherwise use the pretty logger at Warn level, and only log to STDOUT
		pterm.DefaultLogger.Level = pterm.LogLevelWarn
		handler = pterm.NewSlogHandler(&pterm.DefaultLogger)
	}

	a.Logger = slog.New(handler)
	return nil
}