using SunlightAggregationManager.View; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; using static System.Runtime.InteropServices.JavaScript.JSType; namespace SunlightAggregationManager.UserClass { public class LogGing { public class LOGinf { public required string Logpath { get; set; } public required string LogPath { get; set; } public required string Log_time { get; set; } public required object DAT { get; set; } } static Queue LogGingQueue = new Queue(); static Queue ERRQueue = new Queue(); static Queue ExchangeQueue = new Queue(); public static void LogGingDATA(string dat) { LOGinf ginf = new LOGinf { Logpath = System.Environment.CurrentDirectory + "\\Log",//日志文件目录 LogPath = "" + System.Environment.CurrentDirectory + "\\Log\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt",//日志文件 Log_time = "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "]:", DAT = dat }; LogGingQueue.Enqueue(ginf); if(LogGingQueue.Count==1) LogGingQueueW(); } public static async void LogGingQueueW() { while (true) { try { LOGinf inf = LogGingQueue.Dequeue(); if (Directory.Exists(inf.Logpath))//检查日志路径 { if (!File.Exists(inf.LogPath))//检查日志文件并写入启动日志 { FileStream fs = new FileStream(inf.LogPath, FileMode.CreateNew, FileAccess.Write);//创建写入文件 StreamWriter wr = new StreamWriter(fs);//创建文件 wr.WriteLine(inf.Log_time + inf.DAT); wr.Close(); } else { FileStream fs = new FileStream(inf.LogPath, FileMode.Append, FileAccess.Write); StreamWriter wr = new StreamWriter(fs);//创建文件 wr.WriteLine(inf.Log_time + inf.DAT); wr.Close(); } } else { DirectoryInfo directoryInfo = new DirectoryInfo(inf.Logpath); directoryInfo.Create();//创建日志路径 } } catch (Exception ) { } if (LogGingQueue.Count == 0) break; } } public static void ERRDATA(System.Exception dat) { LOGinf ginf = new LOGinf { Logpath = System.Environment.CurrentDirectory + "\\ERR",//日志文件目录 LogPath = "" + System.Environment.CurrentDirectory + "\\ERR\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt",//日志文件 Log_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DAT = dat }; ERRQueue.Enqueue(ginf); if (ERRQueue.Count == 1) ERRQueueW(); } public static async void ERRQueueW() { while (true) { try { LOGinf inf = ERRQueue.Dequeue(); Exception dat = (Exception)inf.DAT; if (Directory.Exists(inf.Logpath))//检查日志路径 { if (!File.Exists(inf.LogPath))//检查文件并写入 { // FileStream fs = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建文件 // StreamWriter wr = new StreamWriter(fs);//创建文件 // wr.Close(); FileStream fil = new FileStream(inf.LogPath, FileMode.CreateNew, FileAccess.Write);//创建写入文件 StreamWriter wfil = new StreamWriter(fil);//创建文件 wfil.WriteLine("[" + inf.Log_time + "];[Error] ||" + Environment.NewLine.ToString()); wfil.WriteLine("[" + inf.Log_time + "];[Error source] ||" + dat.Source.ToString() + Environment.NewLine.ToString()); wfil.WriteLine("[" + inf.Log_time + "];[Error message] ||" + dat.Message.ToString() + Environment.NewLine.ToString()); wfil.WriteLine("[" + inf.Log_time + "];[Error area] ||" + dat.StackTrace.ToString()); wfil.Close(); } else { FileStream fs = new FileStream(inf.LogPath, FileMode.Append, FileAccess.Write);//创建写入文件 StreamWriter wr = new StreamWriter(fs);//创建文件 wr.WriteLine("[" + inf.Log_time + "];[Error] ||" + Environment.NewLine.ToString()); wr.WriteLine("[" + inf.Log_time + "];[Error source] ||" + dat.ToString() + Environment.NewLine.ToString()); wr.WriteLine("[" + inf.Log_time + "];[Error message] ||" + dat.Message.ToString() + Environment.NewLine.ToString()); wr.WriteLine("[" + inf.Log_time + "];[Error area] ||" + dat.ToString()); wr.Close(); } } else { DirectoryInfo directoryInfo = new DirectoryInfo(inf.Logpath); directoryInfo.Create(); } } catch (Exception) { } if (ERRQueue.Count == 0) break; } } public static void ExchangeDATA(string dat) { string Log_time = DateTime.Now.ToString("yyyy-MM-dd"); string logpath = System.Environment.CurrentDirectory + "\\Exchange";//日志文件目录 // string logPathtxt = "" + System.Environment.CurrentDirectory + "\\Log\\"+ Log_time + "Log.txt";//日志文件 // System.IO.DirectoryInfo log = new System.IO.DirectoryInfo();//生成日志文件目录 string log_path = logpath + "\\Exchange" + Log_time + ".txt"; string Log_timehms = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); if (Directory.Exists(logpath))//检查日志路径 { if (!File.Exists(log_path))//检查文件并写入 { // FileStream fs = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建文件 // StreamWriter wr = new StreamWriter(fs);//创建文件 // wr.Close(); FileStream fil = new FileStream(log_path, FileMode.CreateNew, FileAccess.Write);//创建写入文件 StreamWriter wfil = new StreamWriter(fil);//创建文件 wfil.WriteLine("[" + Log_timehms + "];[Exchange] ||" + dat); wfil.Close(); } else { FileStream fs = new FileStream(log_path, FileMode.Append, FileAccess.Write);//创建写入文件 StreamWriter wr = new StreamWriter(fs);//创建文件 wr.WriteLine("[" + Log_timehms + "];[Exchange] ||" + dat); wr.Close(); } } else { DirectoryInfo directoryInfo = new DirectoryInfo(logpath); directoryInfo.Create(); } } } }