From 00d2681a703e8d9570f0278927130b73fa56b123 Mon Sep 17 00:00:00 2001 From: Roland Date: Mon, 28 Sep 2026 19:08:16 +0200 Subject: [PATCH] - ghost admin --- GhostImageManager/Services/LogService.cs | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 GhostImageManager/Services/LogService.cs diff --git a/GhostImageManager/Services/LogService.cs b/GhostImageManager/Services/LogService.cs new file mode 100644 index 0000000..ee78b14 --- /dev/null +++ b/GhostImageManager/Services/LogService.cs @@ -0,0 +1,52 @@ +namespace GhostImageManager.Services; + +public class LogService +{ + private readonly IWebHostEnvironment _env; + private readonly string _logsDir; + + public LogService(IWebHostEnvironment env) + { + _env = env; + _logsDir = Path.Combine(env.ContentRootPath, "logs"); + } + + public List GetLogFiles() + { + if (!Directory.Exists(_logsDir)) + return new List(); + + return Directory.GetFiles(_logsDir, "ghost-image-manager-*.log") + .OrderByDescending(f => f) + .ToList(); + } + + public string ReadLogFile(string fileName, int maxLines = 1000) + { + var filePath = Path.Combine(_logsDir, fileName); + if (!File.Exists(filePath)) + return $"Log-Datei nicht gefunden: {fileName}"; + + try + { + var lines = File.ReadAllLines(filePath); + if (lines.Length <= maxLines) + return string.Join(Environment.NewLine, lines); + + return string.Join(Environment.NewLine, lines.Skip(lines.Length - maxLines)); + } + catch (Exception ex) + { + return $"Fehler beim Lesen der Log-Datei: {ex.Message}"; + } + } + + public string ReadLatestLog(int maxLines = 1000) + { + var files = GetLogFiles(); + if (!files.Any()) + return "Keine Log-Dateien vorhanden."; + + return ReadLogFile(Path.GetFileName(files.First()), maxLines); + } +}