From bb929bd0809eefc1108dd779846ff07d997f7ef0 Mon Sep 17 00:00:00 2001 From: huanghongfeng <huanghongfeng@hnkhzn.com> Date: 星期五, 19 七月 2024 09:25:14 +0800 Subject: [PATCH] 反馈MES工单完成 --- 代码管理/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs | 175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 173 insertions(+), 2 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs" index 34f0b1f..e269dba 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/LogInfo/WriteLog.cs" @@ -1,11 +1,14 @@ 锘縰sing Newtonsoft.Json; +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; using System.Text; using System.Threading.Tasks; +using WIDESEA_Core.Extensions; namespace WIDESEA_Comm.LogInfo { @@ -14,12 +17,24 @@ /// </summary> public partial class WriteLog { + private int fileSize; + public static WriteLog log; + static string EquipName; + private string logFileName; + public string FileLogPath { set; get; } /// <summary> /// 鍐欏叆鏃ュ織(涓嶈澶氱嚎绋嬫搷浣滃悓涓�鏂囦欢锛屼竴涓澶囦竴涓枃浠跺す) /// </summary> 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)) { @@ -27,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 { @@ -36,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(); @@ -51,5 +67,160 @@ } catch { } } + public static WriteLog Info(string equipName) + { + EquipName = equipName; + //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) + { + //鍒濆鍖栧ぇ浜�399M鏃ュ織鏂囦欢灏嗚嚜鍔ㄥ垹闄�; + + this.fileSize = 2048 * 1024 * 200;//50M 2048 * 1024 * 200= 419430000瀛楄妭(b)=399.9996185鍏嗗瓧鑺�(mb) + + //榛樿璺緞 + + //this.FileLogPath = AppContext.BaseDirectory + "\\log\\" + EquipName + "\\"; + EquipName = equipName; + if (!string.IsNullOrEmpty(equipName)) + this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log"; + else + this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log"; + //this.logFileName = EquipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log"; + } + object flag = new object(); + public void Write(string Message, string equipName) + { + lock (flag) + { + if (!string.IsNullOrEmpty(equipName)) + this.logFileName = equipName + "_log" + DateTime.Now.ToString("yyyyMMdd") + ".log"; + else + this.logFileName = "log" + DateTime.Now.ToString("yyyyMMdd") + ".log"; + this.Write(this.logFileName, Message, equipName); + } + } + public void Write(string LogFileName, string Message, string equipName) + { + + //DirectoryInfo path=new DirectoryInfo(LogFileName); + //濡傛灉鏃ュ織鏂囦欢鐩綍涓嶅瓨鍦�,鍒欏垱寤� + if (!Directory.Exists(this.FileLogPath)) + { + Directory.CreateDirectory(this.FileLogPath); + } + + FileInfo finfo = new FileInfo(this.FileLogPath + LogFileName); + if (finfo.Exists && finfo.Length > fileSize) + { + finfo.Delete(); + } + try + { + FileStream fs = new FileStream(this.FileLogPath + LogFileName, FileMode.Append); + StreamWriter strwriter = new StreamWriter(fs); + try + { + + DateTime d = DateTime.Now; + strwriter.WriteLine("鏃堕棿:" + d.ToString()); + strwriter.WriteLine(Message); + strwriter.WriteLine(); + strwriter.Flush(); + } + catch (Exception ee) + { + //Console.WriteLine("鏃ュ織鏂囦欢鍐欏叆澶辫触淇℃伅:" + ee.ToString()); + } + finally + { + strwriter.Close(); + strwriter = null; + fs.Close(); + fs = null; + } + } + catch (Exception ee) + { + //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 } } -- Gitblit v1.9.3