分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-28 1e38f44af86775a341e4d0e4411d24ad35e417d3
´úÂë¹ÜÀí/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs
@@ -2,6 +2,7 @@
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http.Json;
using System.Reflection.Metadata;
@@ -27,6 +28,13 @@
        public static void Write_Log(string groupName, string logName, string content, object data = null)
        {
            string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{DateTime.Now.ToString("yyyy_MM_dd")}";
            #region åˆ é™¤æ–‡ä»¶å¤¹å†…指定日期前文件夹
            string name = Environment.CurrentDirectory + "/Log/" + $"/{groupName}";
            if (Directory.Exists(name))
                DeleteFoldersOlderThan(name, DateTime.Now.AddDays(-30));
            #endregion
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(basePath))
            {
@@ -34,7 +42,7 @@
            }
            try
            {
                FileStream fs = new FileStream(basePath + "/" + logName + $"{DateTime.Now.ToString("yyyy_MM_dd")}_Log.txt", FileMode.Append);
                FileStream fs = new FileStream(basePath + "/" + logName + $"_{DateTime.Now.ToString("yyyy_MM_dd")}_Log.txt", FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                {
@@ -43,7 +51,8 @@
                    strwriter.WriteLine(content);
                    if (data != null)
                    {
                        strwriter.WriteLine(JsonConvert.SerializeObject(data));
                        //strwriter.WriteLine(JsonConvert.SerializeObject(data));
                        strwriter.WriteLine(data);
                    }
                    strwriter.WriteLine("-------------------------------");
                    strwriter.WriteLine();
@@ -64,6 +73,13 @@
            //if (log == null)
            log = new WriteLog("Info" + equipName);
            log.FileLogPath = AppContext.BaseDirectory + "\\log\\Info\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\";
            #region åˆ é™¤æ–‡ä»¶å¤¹å†…指定日期前文件夹
            string name = AppContext.BaseDirectory + "\\log\\Info\\";
            if (Directory.Exists(name))
                DeleteFoldersOlderThan(name, DateTime.Now.AddDays(-30));
            #endregion
            return log;
        }
        private WriteLog(string equipName)
@@ -139,5 +155,72 @@
                //Console.WriteLine("日志文件没有打开,详细信息如下:");
            }
        }
        #region è‡ªåŠ¨æ¸…é™¤æ—¥å¿—
        /// <summary>
        /// åˆ é™¤æ–‡ä»¶å¤¹å†…指定日期前文件夹
        /// </summary>
        /// <param name="folderPath"></param>
        /// <param name="cutOffDate"></param>
        public static void DeleteFoldersOlderThan(string folderPath, DateTime cutOffDate)
        {
            DirectoryInfo di = new DirectoryInfo(folderPath);
            foreach (DirectoryInfo subDir in di.GetDirectories())
            {
                // èŽ·å–æ–‡ä»¶å¤¹çš„æœ€åŽè®¿é—®æ—¶é—´
                DateTime lastAccess = subDir.CreationTime;
                //DateTime lastAccess = subDir.LastAccessTime;
                // å¦‚果文件夹的最后访问时间早于或等于截止日期,则删除该文件夹
                if (lastAccess <= cutOffDate)
                {
                    try
                    {
                        Directory.Delete(subDir.FullName, true); // é€’归删除文件夹及其内容
                        //Console.WriteLine($"文件 {subDir.FullName} å·²åˆ é™¤ã€‚");
                    }
                    catch (Exception ex)
                    {
                        //Console.WriteLine($"无法删除文件 {subDir.FullName}: {ex.Message}");
                    }
                }
            }
        }
        /// <summary>
        /// åˆ é™¤æ–‡ä»¶å¤¹å†…指定日期前文件
        /// </summary>
        /// <param name="directoryPath"></param>
        /// <param name="cutOffDate"></param>
        public static void DeleteFilesOlderThan(string directoryPath, DateTime cutOffDate)
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);
            // èŽ·å–æ‰€æœ‰æ–‡ä»¶å¹¶ç­›é€‰å‡ºåˆ›å»ºæ—¥æœŸåœ¨æŒ‡å®šæ—¥æœŸä¹‹å‰çš„æ–‡ä»¶
            FileInfo[] filesToDelete = directoryInfo.GetFiles()
                .Where(f => f.CreationTime < cutOffDate).ToArray();
            foreach (FileInfo file in filesToDelete)
            {
                try
                {
                    file.Delete(); // åˆ é™¤æ–‡ä»¶
                    Console.WriteLine($"文件 {file.FullName} å·²åˆ é™¤ã€‚");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"无法删除文件 {file.FullName}: {ex.Message}");
                }
            }
        }
        //public static void Main()
        //{
        //    string path = @"C:\YourDirectoryPath"; // æ›¿æ¢ä¸ºä½ çš„目录路径
        //    DateTime cutOff = new DateTime(2023, 3, 31); // è®¾ç½®åˆ é™¤æ–‡ä»¶çš„æˆªæ­¢æ—¥æœŸ
        //    DeleteFilesOlderThan(path, cutOff);
        //}
        #endregion
    }
}