diff --git a/Libraries/Core/Models/Utils/ISptLogger.cs b/Libraries/Core/Models/Utils/ISptLogger.cs index 49c2cc5e..53c5534d 100644 --- a/Libraries/Core/Models/Utils/ISptLogger.cs +++ b/Libraries/Core/Models/Utils/ISptLogger.cs @@ -14,6 +14,6 @@ public interface ISptLogger void Info(string data, Exception? ex = null); void Debug(string data, Exception? ex = null); void Critical(string data, Exception? ex = null); - void WriteToLogFile(string body); + void WriteToLogFile(string body, LogLevel level = LogLevel.Info); bool IsLogEnabled(LogLevel level); } diff --git a/Libraries/Core/Utils/Logger/FileLogger.cs b/Libraries/Core/Utils/Logger/FileLogger.cs new file mode 100644 index 00000000..027fcb1c --- /dev/null +++ b/Libraries/Core/Utils/Logger/FileLogger.cs @@ -0,0 +1,6 @@ +namespace Core.Utils.Logger; + +// This is a dummy class to use for SourceContext in Serilog, do not remove! +public class FileLogger +{ +} diff --git a/Server/Logger/WebApplicationLogger.cs b/Server/Logger/WebApplicationLogger.cs index ab24b6a1..fdab3bee 100644 --- a/Server/Logger/WebApplicationLogger.cs +++ b/Server/Logger/WebApplicationLogger.cs @@ -1,5 +1,6 @@ using Core.Models.Logging; using Core.Models.Utils; +using Core.Utils.Logger; using SptCommon.Annotations; using LogLevel = Core.Models.Spt.Logging.LogLevel; @@ -8,11 +9,17 @@ namespace Server.Logger; [Injectable] public class SptWebApplicationLogger : ISptLogger { + private readonly ILogger _logger; + private static ILogger? _fileLogger; public SptWebApplicationLogger(ILoggerProvider provider) { _logger = provider.CreateLogger(typeof(T).FullName ?? "SPT Logger Default Name"); + if (_fileLogger == null) + { + _fileLogger = provider.CreateLogger(typeof(FileLogger).FullName ?? "SPT Logger Default Name"); + } } public void LogWithColor( @@ -62,10 +69,9 @@ public class SptWebApplicationLogger : ISptLogger _logger.LogCritical(ex, GetColorizedText(data, LogTextColor.Black, LogBackgroundColor.Red)); } - public void WriteToLogFile(string data) + public void WriteToLogFile(string body, LogLevel level = LogLevel.Info) { - // TODO: implement + turn object into json - _logger.LogError("NOT IMPLEMENTED - WriteToLogFile"); + _fileLogger?.Log(ConvertLogLevel(level), body); } public bool IsLogEnabled(LogLevel level) diff --git a/Server/appsettings.json b/Server/appsettings.json index dee0bc4b..31cf5a46 100644 --- a/Server/appsettings.json +++ b/Server/appsettings.json @@ -28,9 +28,26 @@ ], "WriteTo": [ { - "Name": "Console", + "Name": "Logger", "Args": { - "formatter": "Server.Logger.ConsoleFormatter::Default, Server" + "configureLogger": { + "Filter": [ + { + "Name": "ByExcluding", + "Args": { + "expression": "StartsWith(SourceContext, 'Core.Utils.Logger.FileLogger')" + } + } + ], + "WriteTo": [ + { + "Name": "Console", + "Args": { + "formatter": "Server.Logger.ConsoleFormatter::Default, Server" + } + } + ] + } } }, { diff --git a/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs b/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs index 6013a3ac..d3586304 100644 --- a/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs +++ b/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs @@ -51,7 +51,7 @@ public class SptBasicLogger : ISptLogger Console.WriteLine($"{categoryName}: {data}"); } - public void WriteToLogFile(string body) + public void WriteToLogFile(string body, LogLevel level = LogLevel.Info) { Console.WriteLine($"{categoryName}: {body}"); } diff --git a/Tools/ItemTplGenerator/SptBasicLogger.cs b/Tools/ItemTplGenerator/SptBasicLogger.cs index 23c6c19f..51cb34af 100644 --- a/Tools/ItemTplGenerator/SptBasicLogger.cs +++ b/Tools/ItemTplGenerator/SptBasicLogger.cs @@ -51,7 +51,7 @@ public class SptBasicLogger : ISptLogger Console.WriteLine($"{categoryName}: {data}"); } - public void WriteToLogFile(string body) + public void WriteToLogFile(string body, LogLevel level = LogLevel.Info) { Console.WriteLine($"{categoryName}: {body}"); } diff --git a/UnitTests/Mock/MockLogger.cs b/UnitTests/Mock/MockLogger.cs index a15e9fba..1d7776fd 100644 --- a/UnitTests/Mock/MockLogger.cs +++ b/UnitTests/Mock/MockLogger.cs @@ -41,7 +41,7 @@ public class MockLogger : ISptLogger Console.WriteLine(data); } - public void WriteToLogFile(string body) + public void WriteToLogFile(string body, LogLevel level = LogLevel.Info) { throw new NotImplementedException(); }