using System.Text; using NLog; using NLog.Targets; namespace TURN.Services.Chess { public static class LoggerFactory { public static Logger GetLogger() { return LogManager.Setup().LoadConfiguration(c => { ColoredConsoleTarget consoleTarget = new() { Layout = "${date}|${level:uppercase=true}|${message:withexception=true}" }; FileTarget fileTarget = new() { FileName = Environment.GetEnvironmentVariable("LOG_FILE_PATH"), Layout = "${date}|${level:uppercase=true}|${message:withexception=true}", Encoding = Encoding.UTF8, LineEnding = LineEndingMode.CRLF, KeepFileOpen = true, ConcurrentWrites = true, ArchiveAboveSize = long.Parse(Environment.GetEnvironmentVariable("LOG_FILE_SIZE")), MaxArchiveFiles = 10, MaxArchiveDays = 365 }; _ = c.ForLogger("consoleAndFile") .FilterMinLevel(NLog.LogLevel.Debug) .WriteTo(consoleTarget) .WriteTo(fileTarget); }).GetLogger("consoleAndFile"); } } }