using System.IO; using System.IO.Compression; namespace SparkClient.Model.Helper; public class Log4NetHelper { /// /// 归档上月日志文件 /// public static void ArchiveOldLogs() { string logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs"); string archiveDirectory = Path.Combine(logDirectory, "history"); // 确保归档目录存在 if (!Directory.Exists(archiveDirectory)) { Directory.CreateDirectory(archiveDirectory); } // 获取上个月日期 DateTime now = DateTime.Now; DateTime lastMonth = new DateTime(now.Year, now.Month, 1).AddMonths(-1); string lastMonthPattern = lastMonth.ToString("yyyy-MM"); // 压缩文件路径 string zipFilePath = Path.Combine(archiveDirectory, $"{lastMonthPattern}.zip"); if (!File.Exists(zipFilePath)) { // 创建压缩文件 using (var zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create)) { foreach (string file in Directory.GetFiles(logDirectory, $"{lastMonthPattern}-*.log")) { // 将日志文件添加到压缩包中 zipArchive.CreateEntryFromFile(file, Path.GetFileName(file)); File.Delete(file); // 删除源文件 } } } // 删除三个月以上的归档日志 DateTime cutoffDate = now.AddMonths(-3); var zipFiles = Directory.GetFiles(archiveDirectory, "*.zip"); foreach (var file in zipFiles) { var fileInfo = new FileInfo(file); if (fileInfo.LastWriteTimeUtc < cutoffDate) { File.Delete(file); Console.WriteLine($"Deleted old archive: {file}"); } } Console.WriteLine($"Archived logs to {zipFilePath}"); } }