diff --git a/Libraries/Core/Controllers/HealthController.cs b/Libraries/Core/Controllers/HealthController.cs index e8a2bb0c..a30bb89a 100644 --- a/Libraries/Core/Controllers/HealthController.cs +++ b/Libraries/Core/Controllers/HealthController.cs @@ -12,7 +12,6 @@ using Core.Utils; using Core.Utils.Cloners; using SptCommon.Annotations; using SptCommon.Extensions; -using BodyPartHealth = Core.Models.Eft.Common.Tables.BodyPartHealth; namespace Core.Controllers; 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 434823d1..7d457959 100644 --- a/Server/Logger/WebApplicationLogger.cs +++ b/Server/Logger/WebApplicationLogger.cs @@ -2,6 +2,7 @@ using SptCommon.Annotations; using Core.Models.Eft.ItemEvent; using Core.Models.Logging; using Core.Models.Utils; +using Core.Utils.Logger; using LogLevel = Core.Models.Spt.Logging.LogLevel; namespace Server.Logger; @@ -10,10 +11,15 @@ namespace Server.Logger; public class SptWebApplicationLogger : ISptLogger { private 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( @@ -77,10 +83,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 665d85cf..56cdb060 100644 --- a/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs +++ b/Tools/HideoutCraftQuestIdGenerator/SptBasicLogger.cs @@ -50,7 +50,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 57449f47..413fd268 100644 --- a/UnitTests/Mock/MockLogger.cs +++ b/UnitTests/Mock/MockLogger.cs @@ -51,7 +51,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(); }