diff --git a/Logging/FileLogger.cs b/Logging/FileLogger.cs index 10fd0ec..522d3f1 100644 --- a/Logging/FileLogger.cs +++ b/Logging/FileLogger.cs @@ -4,7 +4,7 @@ namespace Logging; public class FileLogger : LoggerBase { - private string logFilePath { get; } + internal string logFilePath { get; } private const int MaxNumberOfLogFiles = 5; public FileLogger(string logFilePath, Encoding? encoding = null) : base (encoding) diff --git a/Logging/Logger.cs b/Logging/Logger.cs index a4ed3d5..46988d1 100644 --- a/Logging/Logger.cs +++ b/Logging/Logger.cs @@ -8,6 +8,7 @@ public class Logger : TextWriter private static readonly string LogDirectoryPath = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "/var/log/tranga-api" : Path.Join(Directory.GetCurrentDirectory(), "logs"); + public string? logFilePath => _fileLogger?.logFilePath; public override Encoding Encoding { get; } public enum LoggerType { @@ -69,4 +70,9 @@ public class Logger : TextWriter { return _memoryLogger.GetNewLines(); } + + public string[] GetLog() + { + return _memoryLogger.GetLogMessages(); + } } \ No newline at end of file diff --git a/Logging/MemoryLogger.cs b/Logging/MemoryLogger.cs index 2921cbf..5e4b92b 100644 --- a/Logging/MemoryLogger.cs +++ b/Logging/MemoryLogger.cs @@ -24,7 +24,7 @@ public class MemoryLogger : LoggerBase } } - public string[] GetLogMessage() + public string[] GetLogMessages() { return Tail(Convert.ToUInt32(_logMessages.Count)); } diff --git a/Tranga/Server.cs b/Tranga/Server.cs index 1b429d9..9ae7f18 100644 --- a/Tranga/Server.cs +++ b/Tranga/Server.cs @@ -394,6 +394,27 @@ public class Server : GlobalBase break; } break; + case "LogMessages": + if (logger is null || !File.Exists(logger?.logFilePath)) + { + SendResponse(HttpStatusCode.NotFound, response); + break; + } + SendResponse(HttpStatusCode.OK, response, logger.GetLog()); + break; + case "LogFile": + if (logger is null || !File.Exists(logger?.logFilePath)) + { + SendResponse(HttpStatusCode.NotFound, response); + break; + } + + string logDir = new FileInfo(logger.logFilePath).DirectoryName!; + string tmpFilePath = Path.Join(logDir, "Tranga.log"); + File.Copy(logger.logFilePath, tmpFilePath); + SendResponse(HttpStatusCode.OK, response, new FileStream(tmpFilePath, FileMode.Open)); + File.Delete(tmpFilePath); + break; default: SendResponse(HttpStatusCode.BadRequest, response); break;