using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEA_Common.Log { public class WriteLog { private int fileSize; private string logFileName; public static WriteLog log; static string EquipName; public static WriteLog GetLog(string equipName) { EquipName = equipName; //if (log == null) log = new WriteLog(equipName); log.FileLogPath = AppContext.BaseDirectory + "\\log\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\"; return log; } 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")*/ + "\\"; return log; } public static WriteLog Error(string equipName) { EquipName = equipName; //if (log == null) log = new WriteLog("Error" + equipName); log.FileLogPath = AppContext.BaseDirectory + "\\log\\Error\\" + DateTime.Now.ToString("yyyyMMdd") /*+ "\\" + EquipName + "_" + DateTime.Now.ToString("yyyyMMdd")*/ + "\\"; 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"; } public int FileSize { set { fileSize = value; } get { return fileSize; } } public string FileLogPath { set; get; } //= AppContext.BaseDirectory + "\\log\\" + EquipName + "\\"; public string LogFileName { set { this.logFileName = value; } get { return this.logFileName; } } 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("日志文件没有打开,详细信息如下:"); } } /// /// 写入日志(不要多线程操作同一文件,一个设备一个文件夹) /// /// 日志组 /// 日志名称 /// 内容 /// 数据 public static void Write_Log(string groupName, string logName, string content, object data = null) { DateTime nowTime = DateTime.Now; string basePath = System.Environment.CurrentDirectory + "/Log/" + $"/{groupName}/{nowTime.ToString("yyyy-MM-dd")}"; //如果日志文件目录不存在,则创建 if (!Directory.Exists(basePath)) { Directory.CreateDirectory(basePath); } try { FileStream fs = new FileStream(basePath + "/" + logName + $"{nowTime.ToString("yyMMdd")}.txt", FileMode.Append); StreamWriter strwriter = new StreamWriter(fs); try { strwriter.WriteLine(nowTime.ToString() + "." + nowTime.Millisecond); strwriter.WriteLine(content); if (data != null) { strwriter.WriteLine(JsonConvert.SerializeObject(data)); } strwriter.WriteLine("-------------------------------"); strwriter.WriteLine(); strwriter.Flush(); } catch { } finally { strwriter.Close(); fs.Close(); } } catch { } } } }