// Copyright (c) 2025 Nikolai Papin // // This file is part of the Auto Attendance app that looks for // self-attend QR-codes during lectures and opens their URLs in your // browser. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See // the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package logger import ( "log/slog" "os" "git.weirdcat.su/weirdcat/auto-attendance/internal/config" ) type Logger struct { *slog.Logger *config.Config } func NewLogger(config *config.Config) *Logger { var level slog.Level switch config.Logging.Level { case "debug": level = slog.LevelDebug case "info": level = slog.LevelInfo case "warn": level = slog.LevelWarn case "error": level = slog.LevelError default: level = slog.LevelInfo } var output *os.File switch config.Logging.Output { case "stderr": output = os.Stderr case "stdout": output = os.Stdout default: output = os.Stdout } handler := slog.NewTextHandler(output, &slog.HandlerOptions{ Level: level, }) logger := slog.New(handler) return &Logger{logger, config} }