From 690f9f3e83f5ee91ec729ce13d5eeb2ab92a3143 Mon Sep 17 00:00:00 2001 From: CWX Date: Wed, 23 Apr 2025 15:35:39 +0100 Subject: [PATCH] Revert "Remove logging Requests" This reverts commit d0aad46694ba2047b518ea1937a4b04a92b9a253. --- .../Servers/Http/RequestLogger.cs | 6 ++++ .../Servers/Http/SptHttpListener.cs | 27 +++++++++++++++ SPTarkov.Server/appsettings.Development.json | 33 +++++++++++++++++++ SPTarkov.Server/appsettings.json | 6 ++++ 4 files changed, 72 insertions(+) create mode 100644 Libraries/SPTarkov.Server.Core/Servers/Http/RequestLogger.cs diff --git a/Libraries/SPTarkov.Server.Core/Servers/Http/RequestLogger.cs b/Libraries/SPTarkov.Server.Core/Servers/Http/RequestLogger.cs new file mode 100644 index 00000000..ff1a7e43 --- /dev/null +++ b/Libraries/SPTarkov.Server.Core/Servers/Http/RequestLogger.cs @@ -0,0 +1,6 @@ +namespace SPTarkov.Server.Core.Servers.Http; + +// This is a dummy class to use for SourceContext in Serilog, do not remove! +public class RequestLogger +{ +} diff --git a/Libraries/SPTarkov.Server.Core/Servers/Http/SptHttpListener.cs b/Libraries/SPTarkov.Server.Core/Servers/Http/SptHttpListener.cs index 7245f835..28144162 100644 --- a/Libraries/SPTarkov.Server.Core/Servers/Http/SptHttpListener.cs +++ b/Libraries/SPTarkov.Server.Core/Servers/Http/SptHttpListener.cs @@ -26,6 +26,7 @@ public class SptHttpListener : IHttpListener protected readonly JsonUtil _jsonUtil; protected readonly LocalisationService _localisationService; protected readonly ISptLogger _logger; + protected readonly ISptLogger _requestLogger; protected readonly HttpRouter _router; @@ -35,6 +36,7 @@ public class SptHttpListener : IHttpListener HttpRouter httpRouter, IEnumerable serializers, ISptLogger logger, + ISptLogger requestsLogger, JsonUtil jsonUtil, HttpResponseUtil httpHttpResponseUtil, LocalisationService localisationService @@ -43,6 +45,7 @@ public class SptHttpListener : IHttpListener _router = httpRouter; _serializers = serializers; _logger = logger; + _requestLogger = requestsLogger; _httpResponseUtil = httpHttpResponseUtil; _localisationService = localisationService; _jsonUtil = jsonUtil; @@ -153,6 +156,7 @@ public class SptHttpListener : IHttpListener { // Send only raw response without transformation SendJson(resp, output, sessionID); + LogRequest(req, output); return; } @@ -167,6 +171,8 @@ public class SptHttpListener : IHttpListener { SendZlibJson(resp, output, sessionID); } + + LogRequest(req, output); } /// @@ -179,6 +185,20 @@ public class SptHttpListener : IHttpListener return req.Headers.TryGetValue("responsecompressed", out var value) && value == "0"; } + /// + /// Log request if enabled + /// + /// Log request if enabled + /// Output string + protected void LogRequest(HttpRequest req, string output) + { + if (ProgramStatics.ENTRY_TYPE() != EntryType.RELEASE) + { + var log = new Response(req.Method, output.Substring(0, Math.Min(output.Length, 8000))); + _requestLogger.Info($"RESPONSE={_jsonUtil.Serialize(log)}"); + } + } + public string GetResponse(string sessionID, HttpRequest req, string? body) { var output = _router.GetResponse(req, sessionID, body, out var deserializedObject); @@ -190,6 +210,13 @@ public class SptHttpListener : IHttpListener output = _httpResponseUtil.GetBody(null, BackendErrorCodes.HTTPNotFound, $"UNHANDLED RESPONSE: {req.Path.ToString()}"); } + if (ProgramStatics.ENTRY_TYPE() != EntryType.RELEASE) + { + // Parse quest info into object + var log = new Request(req.Method, new RequestData(req.Path, req.Headers, deserializedObject)); + _requestLogger.Info($"REQUEST={_jsonUtil.Serialize(log)}"); + } + return output; } diff --git a/SPTarkov.Server/appsettings.Development.json b/SPTarkov.Server/appsettings.Development.json index 8f482ea6..7301b71c 100644 --- a/SPTarkov.Server/appsettings.Development.json +++ b/SPTarkov.Server/appsettings.Development.json @@ -26,6 +26,12 @@ "Args": { "configureLogger": { "Filter": [ + { + "Name": "ByExcluding", + "Args": { + "expression": "StartsWith(SourceContext, 'SPTarkov.Server.Core.Servers.Http.RequestLogger')" + } + }, { "Name": "ByExcluding", "Args": { @@ -54,6 +60,33 @@ } } }, + { + "Name": "Logger", + "Args": { + "configureLogger": { + "Filter": [ + { + "Name": "ByIncludingOnly", + "Args": { + "expression": "StartsWith(SourceContext, 'SPTarkov.Server.Core.Servers.Http.RequestLogger')" + } + } + ], + "WriteTo": [ + { + "Name": "File", + "Args": { + "formatter": "SPTarkov.Server.Logger.FileFormatter::Default, SPTarkov.Server", + "path": "./user/logs/requests/requests.txt", + "rollingInterval": "Day", + "fileSizeLimitBytes": "20971520", + "rollOnFileSizeLimit": true + } + } + ] + } + } + }, { "Name": "Logger", "Args": { diff --git a/SPTarkov.Server/appsettings.json b/SPTarkov.Server/appsettings.json index 7dc454e5..f1c901a8 100644 --- a/SPTarkov.Server/appsettings.json +++ b/SPTarkov.Server/appsettings.json @@ -26,6 +26,12 @@ "Args": { "configureLogger": { "Filter": [ + { + "Name": "ByExcluding", + "Args": { + "expression": "StartsWith(SourceContext, 'SPTarkov.Server.Core.Servers.Http.RequestLogger')" + } + }, { "Name": "ByExcluding", "Args": {