using System.IO; namespace WindowsGotify.Services; public sealed class Logger { private readonly object _lock = new(); private readonly string _logFile; public Logger() { var dir = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "WindowsGotify", "logs"); Directory.CreateDirectory(dir); _logFile = Path.Combine(dir, "app.log"); } public void Info(string message) => Write("INFO", message); public void Warn(string message) => Write("WARN", message); public void Error(string message, Exception? ex = null) => Write("ERROR", ex is null ? message : $"{message} {ex}"); private void Write(string level, string message) { var line = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff} [{level}] {message}"; lock (_lock) { try { File.AppendAllText(_logFile, line + Environment.NewLine); } catch { // 日志写不进时静默,不影响主流程 } } } }