diff --git a/ArchiSteamFarm/NLog/Logging.cs b/ArchiSteamFarm/NLog/Logging.cs index 56c49d5eb..6704307f4 100644 --- a/ArchiSteamFarm/NLog/Logging.cs +++ b/ArchiSteamFarm/NLog/Logging.cs @@ -166,12 +166,24 @@ namespace ArchiSteamFarm.NLog { config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, coloredConsoleTarget)); if (uniqueInstance) { + try { + if (!Directory.Exists(SharedInfo.ArchivalLogsDirectory)) { + Directory.CreateDirectory(SharedInfo.ArchivalLogsDirectory); + } + } catch (Exception e) { + ASF.ArchiLogger.LogGenericException(e); + } + FileTarget fileTarget = new FileTarget("File") { + ArchiveFileName = Path.Combine(SharedInfo.ArchivalLogsDirectory, SharedInfo.ArchivalLogFile), + ArchiveNumbering = ArchiveNumberingMode.Rolling, + ArchiveOldFileOnStartup = true, CleanupFileName = false, ConcurrentWrites = false, DeleteOldFileOnStartup = true, FileName = SharedInfo.LogFile, - Layout = GeneralLayout + Layout = GeneralLayout, + MaxArchiveFiles = 10 }; config.AddTarget(fileTarget); diff --git a/ArchiSteamFarm/SharedInfo.cs b/ArchiSteamFarm/SharedInfo.cs index c7297aaf2..fa64f881a 100644 --- a/ArchiSteamFarm/SharedInfo.cs +++ b/ArchiSteamFarm/SharedInfo.cs @@ -29,6 +29,8 @@ using JetBrains.Annotations; namespace ArchiSteamFarm { internal static class SharedInfo { internal const ulong ArchiSteamID = 76561198006963719; + internal const string ArchivalLogFile = "log.{#}.txt"; + internal const string ArchivalLogsDirectory = "logs"; internal const string ASF = nameof(ASF); internal const ulong ASFGroupSteamID = 103582791440160998; internal const string AssemblyDocumentation = AssemblyName + ".xml"; diff --git a/ArchiSteamFarm/overlay/all/logs/.gitkeep b/ArchiSteamFarm/overlay/all/logs/.gitkeep new file mode 100644 index 000000000..e69de29bb