110 lines
3.6 KiB
C#
110 lines
3.6 KiB
C#
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}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Obtiene las últimas líneas del log desde una interacción específica
|
|
/// </summary>
|
|
/// <param name="sinceMessage">Mensaje desde el cual comenzar a leer</param>
|
|
/// <returns>String con las líneas del log desde el mensaje especificado</returns>
|
|
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<string>();
|
|
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}";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Obtiene las últimas N líneas del log
|
|
/// </summary>
|
|
/// <param name="lineCount">Número de líneas a obtener</param>
|
|
/// <returns>String con las últimas líneas del log</returns>
|
|
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<string>();
|
|
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}";
|
|
}
|
|
}
|
|
}
|
|
}
|