123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- using NX_ModelClassLibrary.CustomEnum;
- using NX_ModelClassLibrary.LogCorrelationModel;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace NX_LogClassLibrary
- {
- public static class LogHelper
- {
- private readonly static object thLock = new object();
-
- #region 记录日志为文本文档形式
- /// <summary>
- /// 记录日志类
- /// </summary>
- /// <param name="Txt">日志内容</param>
- /// <param name="logType">日志类型(Run:程序运行日志; Err:程序错误日志; DbErr:数据库异常相关日志; OPCRun:OPC运行日志; SocketRun:Socket运行日志; SocErr:Socket异常日志。)</param>
- public static void WriteLog(string Txt, LogTypeEnum logType)
- {
- lock (thLock)
- {
- //获取日志存放位置,年份不同,存放文件夹不同。
- string strDir = Environment.CurrentDirectory + "\\NX_CleanMac_Log\\" + DateTime.Now.ToString("yyyy") + "\\";
- //获取时间,年月日。
- string fileDate = DateTime.Now.ToString("yyyy-MM-dd");
- //获取时间,年月。
- string fileDate1 = DateTime.Now.ToString("yyyy-MM");
- //每一年的不同月份日志放在不同的文件夹,同一月份不同类型的日志放于同一个文件夹。
- string strDir1 = strDir + fileDate1 + "\\";
- //每一年的相同月份不同日期的日志放在不同的文件夹
- string strDir2 = strDir1 + fileDate + "\\";
- //不同的日志名称,日志文件不同
- string filePath = strDir2 + fileDate + "_" + logType + ".log";
- string DateString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
- string Str = "发生时间:" + DateString + "|" + Txt + "\r\n";
- WriteFile(strDir2, filePath, Str);
- }
- }
- /// <summary>
- /// 日志文件打印类
- /// </summary>
- /// <param name="strDir">日志文件存放的文件夹</param>
- /// <param name="filePath">日志文件存放路径</param>
- /// <param name="txt">日志内容</param>
- private static void WriteFile(string strDir, string filePath, string txt)
- {
- FileStream fs = null;
- StreamWriter sw = null;
- try
- {
- if (!Directory.Exists(strDir))//如果日志文件存放的文件夹不存在,就新建一个文件夹。
- {
- Directory.CreateDirectory(strDir);
- }
- if (File.Exists(filePath))//日志文件存放路径存在,向日志文件追加记录。
- {
- fs = new FileStream(filePath, FileMode.Append);
- }
- else//日志文件存放路径不存在,创建日志文件。
- {
- fs = new FileStream(filePath, FileMode.Create);
- }
- sw = new StreamWriter(fs);
- //开始写入
- sw.Write(txt);
- //清空缓冲区
- sw.Flush();
- //关闭流
- sw.Close();
- fs.Close();
- }
- catch (Exception)
- {
- ;
- }
- finally
- {
- if (sw != null)
- sw.Close();
- if (fs != null)
- fs.Close();
- }
- }
- #endregion
- #region 读日志
- /// <summary>
- /// 生成文件信息
- /// </summary>
- /// <param name="date"></param>
- /// <param name="logType"></param>
- /// <returns></returns>
- private static Tuple<string, string> BuildLogFileName(DateTime date, LogTypeEnum logType)
- {
- string strDir = Environment.CurrentDirectory + "\\NX_CleanMac_Log\\" + date.ToString("yyyy") + "\\";
- //获取时间,年月日。
- string fileDate = date.ToString("yyyy-MM-dd");
- //获取时间,年月。
- string fileDate1 = date.ToString("yyyy-MM");
- //每一年的不同月份日志放在不同的文件夹,同一月份不同类型的日志放于同一个文件夹。
- string strDir1 = strDir + fileDate1 + "\\";
- //每一年的相同月份不同日期的日志放在不同的文件夹
- string strDir2 = strDir1 + fileDate + "\\";
- //不同的日志名称,日志文件不同
- string filePath = strDir2 + fileDate + "_" + logType + ".log";
- return new Tuple<string, string>(strDir2, filePath);
- }
- public static IEnumerable<LogSearchMd> ReadLog(DateTime begindate, DateTime endDate, LogTypeEnum logType)
- {
- List<LogSearchMd> logs = new List<LogSearchMd>();
- List<string> strlogs = ReadLogFile(begindate, endDate, logType);
- foreach (string strLog in strlogs)
- {
- LogSearchMd log = LogSearchMd.Deserialize(strLog);
- logs.Add(log);
- }
- return logs;
- }
- /// <summary>
- /// 读取log文件
- /// </summary>
- /// <param name="date"></param>
- /// <param name="logType"></param>
- /// <returns></returns>
- public static string[] ReadLogFile(DateTime date, LogTypeEnum logType)
- {
- string filename = BuildLogFileName(date, logType).Item2;
- if (!File.Exists(filename))
- {
- return new string[] { };
- }
- return File.ReadAllLines(filename);
- }
- /// <summary>
- /// 读取log文件
- /// </summary>
- /// <param name="date"></param>
- /// <param name="logType"></param>
- /// <returns></returns>
- public static List<string> ReadLogFile(DateTime begindate, DateTime endDate, LogTypeEnum logType)
- {
- DateTime _date = begindate.Date;
- DateTime _endDate = endDate.Date;
- List<string> logs = new List<string>();
- while (_date <= _endDate)
- {
- string[] _logs = ReadLogFile(_date, logType);
- logs.AddRange(_logs);
- _date = _date.AddDays(1);
- }
- return logs;
- }
- #endregion
- }
- }
|