using System.IO;
using System.IO.Compression;

namespace SparkClient.Model.Helper;

public class Log4NetHelper
{
    /// <summary>
    /// 归档上月日志文件
    /// </summary>
    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); // 删除源文件
                }
            }
        }

       

        Console.WriteLine($"Archived logs to {zipFilePath}");
    }
}