/* * Copyright (c) 2026 RAVAPI Soluções. Todos os direitos reservados. * www.ravapi.com */ using System; using System.IO; using System.Reflection; namespace TechDeskAgent { public static class Logger { private static readonly string LogPath = Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "techdesk-agent.log" ); private static readonly object _lock = new object(); public static void Info(string msg) => Gravar("INFO ", msg); public static void Warn(string msg) => Gravar("WARN ", msg); public static void Error(string msg) => Gravar("ERROR", msg); private static void Gravar(string nivel, string msg) { try { lock (_lock) { string linha = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} [{nivel}] {msg}"; Console.WriteLine(linha); File.AppendAllText(LogPath, linha + Environment.NewLine); // Limita log a 5MB — rotaciona automaticamente var info = new FileInfo(LogPath); if (info.Length > 5 * 1024 * 1024) { string bak = LogPath + ".bak"; if (File.Exists(bak)) File.Delete(bak); File.Move(LogPath, bak); } } } catch { /* não pode deixar o logger derrubar o agente */ } } } }