LogHelp 日记分天记录,只记30天日记
public class LogHelp { /// <summary> /// 一天第几个日记文件 /// </summary> private static int _OneDayI = 1; /// <summary> /// 1只写异常日记,2只写过程日记,4只写测试数据,3=异常+过程,以此类推 /// 0不写日记,7全部日记 /// </summary> private static int LogMode = 7; /// <summary> /// 文件名最前面 /// </summary> public static string No = ""; private static object Block = new object(); static object synObj = new object(); /// <summary> /// 处理缓存控制器 /// </summary> private static Queue<LogMsg> _HandleCacheCr = new Queue<LogMsg>(); public static void Init(int logMode) { LogMode = logMode; //if (LogMode == 1) //{ // Thread td = new Thread(WriteLogThread); // td.Start(); //} } private static void WriteLogThread() { while (LogMode == 1) { WriteLog(); Thread.Sleep(1); } } private static void WriteLog() { if (_HandleCacheCr.Count <= 0) return; LogMsg logMsg; lock (synObj) { logMsg = _HandleCacheCr.Dequeue(); } //Write_Log(logMsg.Time.ToString("yyyy-MM-dd HH:mm:ss:ffff") + " " + logMsg.Msg); } #region 记录日志 //public static void WriteLog(string msg) //{ // if (LogMode != 1) return; // LogMsg logMsg = new LogMsg(); // logMsg.Time = DateTime.Now; // logMsg.Msg = msg; // //锁定队列集合,然后插入 // lock (synObj) // { // _HandleCacheCr.Enqueue(logMsg); // } //} /// <summary> /// 记录日志 /// </summary> /// <param name="msg"></param> public static void WriteLog(string msg, LogType logType = LogType.EXCEPTION) { int logInt = (int)logType; if ((LogMode & 0x01) != logInt && (LogMode & 0x02) != logInt && (LogMode & 0x04) != logInt) return; //string path = @"C:\log.txt"; lock (Block) { string filename = No + DateTime.Now.ToString("yyyyMMdd"); //该日志文件会存在windows服务程序目录下 string path = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + filename + ".txt"; if (!Directory.Exists(path))//如果不存在,则创建 { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\"); } #region 删除前30天的日记 string sYue = DateTime.Now.AddDays(-90).ToString("yyyyMMdd"); string[] files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "\\Logs", sYue + "*.txt"); files.ToList().ForEach(x => FileHelp.DeleteFile(x)); //FileHelp.DeleteFile(AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + sYue + ".txt"); #endregion FileInfo file = new FileInfo(path); if (!file.Exists) { _OneDayI = 1; FileStream fs; fs = File.Create(path); fs.Close(); } else if (file.Length > 30 * 1000 * 1000) { FileStream fs; string destinationFile = ""; destinationFile = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + filename + "_" + _OneDayI + @".txt"; //判断文件是否存在,如果存在,则继续换名称 while (File.Exists(destinationFile)) { _OneDayI++; destinationFile = AppDomain.CurrentDomain.BaseDirectory + "\\Logs\\" + filename + "_" + _OneDayI + @".txt"; } fs = File.Create(destinationFile); fs.Close(); file.CopyTo(destinationFile, true); file.Delete(); fs = File.Create(path); fs.Close(); _OneDayI++; } using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff") + " " + msg); } } } } #endregion /// <summary> /// 日记类型 /// </summary> public enum LogType { /// <summary> /// 异常 /// </summary> EXCEPTION = 1, /// <summary> /// 过程 /// </summary> PROCEDURE = 2, /// <summary> /// 测试 /// </summary> TEST = 4 } public class LogMsg { /// <summary> /// 写日记的时间 /// </summary> public DateTime Time { get; set; } /// <summary> /// 信息 /// </summary> public string Msg { get; set; } } }
作者:三小
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!