using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Diagnostics; using System.IO; namespace GTPCorrgir { using System.Diagnostics; public class Logger { private readonly string _logFilePath; public Logger() { _logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logfile.log"); Trace.Listeners.Add(new TextWriterTraceListener(_logFilePath)); Trace.AutoFlush = true; } public void Log(string message) { // Formato de timestamp [AAAA-MM-DD HH:mm:ss] string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); Trace.WriteLine($"[{timestamp}] {message}"); } /// /// Obtiene las últimas líneas del log desde una interacción específica /// /// Mensaje desde el cual comenzar a leer /// String con las líneas del log desde el mensaje especificado public string GetRecentLogs(string sinceMessage = "Iniciando corrección de texto") { try { if (!File.Exists(_logFilePath)) return "No hay archivo de log disponible"; var lines = File.ReadAllLines(_logFilePath); var recentLines = new List(); bool foundStartPoint = false; // Buscar desde la última ocurrencia del mensaje especificado for (int i = lines.Length - 1; i >= 0; i--) { if (lines[i].Contains(sinceMessage)) { foundStartPoint = true; // Tomar todas las líneas desde este punto hasta el final for (int j = i; j < lines.Length; j++) { recentLines.Add(lines[j]); } break; } } if (!foundStartPoint) { // Si no encontramos el mensaje específico, tomar las últimas 20 líneas int startIndex = Math.Max(0, lines.Length - 20); for (int i = startIndex; i < lines.Length; i++) { recentLines.Add(lines[i]); } } return string.Join("\n", recentLines); } catch (Exception ex) { return $"Error al leer el log: {ex.Message}"; } } /// /// Obtiene las últimas N líneas del log /// /// Número de líneas a obtener /// String con las últimas líneas del log public string GetLastLogLines(int lineCount = 20) { try { if (!File.Exists(_logFilePath)) return "No hay archivo de log disponible"; var lines = File.ReadAllLines(_logFilePath); int startIndex = Math.Max(0, lines.Length - lineCount); var lastLines = new List(); for (int i = startIndex; i < lines.Length; i++) { lastLines.Add(lines[i]); } return string.Join("\n", lastLines); } catch (Exception ex) { return $"Error al leer el log: {ex.Message}"; } } } }