using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Configuration; namespace parkMonitor.LOG { /// /// 日志管理 /// public class LogManager { public static string logAddressStr = "LogAddress"; public static string logAddress; DateTime time; //文件创建时间 private string logFileExtName = "log"; //日志文件扩展名 private Encoding logFileEncoding = Encoding.UTF8; //日志文件编码格式 private string logFileName = string.Empty; //日志文件名 private string logPath = ""; //日志文件路径 private bool writeLogTime = true; //log文件是否写时间 private bool writeStatus = false; //是否写入标志位 private static object obj = new object(); /// /// 配置文件初始化 /// public static void Init() { try { logAddress = ConfigurationManager.AppSettings[logAddressStr]; } catch { Console.WriteLine("配置文件有误"); } } /// /// 日志文件路径 /// public string CreateLogPath() { if (logPath == null || logPath == string.Empty || time.ToString("yyyy-MM-dd") != System.DateTime.Now.ToString("yyyy-MM-dd")) { try { time = System.DateTime.Now; logPath = System.IO.Path.Combine(logAddress, time.ToString("yyyy-MM-dd")); } catch { Console.WriteLine("路径合成失败"); } } if (!logPath.EndsWith(@"\")) { logPath += @"\"; } if (!Directory.Exists(logPath)) { try { Directory.CreateDirectory(logPath); } catch { Console.WriteLine("创建文件路径失败"); } } return logPath; } /// /// 写日志 /// public void WriteLog(LogType logType, string logFile, string msg) { CreateLogPath(); lock (obj) { try { //创建log文件 logFileName = string.Format("{0}{1}.{2}", logPath, logType, this.logFileExtName); using (StreamWriter sw = new StreamWriter(logFileName, true, logFileEncoding)) { //是否写时间 if (logType == LogType.database) { writeLogTime = false; } else { writeLogTime = true; } ////sql类型 //if (logType == LogType.DATABASE) //{ // writeStatus = true; //} //else //{ // writeStatus = false; //} if (writeLogTime) { sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:") + logFile + ":" + msg); } else { sw.WriteLine(logFile + ":" + msg); } } } catch { } } } /// /// log类型不定 /// /// /// /// public void WriteLog(LogType logType, LogFile logFile, string msg) { this.WriteLog(logType, logFile.ToString(), msg); } /// /// log类型为null /// /// /// public void WriteLog(LogType logType, string msg) { this.WriteLog(logType, string.Empty, msg); } /// /// 读日志文件 /// /// /// public void ReadLog(out string sqlStatus, out string sqlMsg, out int count) { sqlStatus = null; sqlMsg = null; count = 0; string date = System.DateTime.Now.ToString("yyyy-MM-dd"); string filePath = logAddress + "\\\\" + date + "\\\\" + "DATABASE.log"; try { List logLines = null; if (File.Exists(filePath)) { logLines = new List(File.ReadAllLines(filePath)); } if (logLines != null) { count = logLines.Count; string logLine = logLines[0]; sqlStatus = logLine.Substring(0, 1); sqlMsg = logLine.Substring(2, logLine.Length - 2); logLines.RemoveAt(0); File.WriteAllLines(filePath, logLines.ToArray()); } } catch (Exception e) { Console.WriteLine(e.Message); } } } /// /// log类型 /// public enum LogFile { LOG, RESET, ERROR, WARNING, INFO, ERROR_NUMBERPLATE } /// /// log文件类型 /// public enum LogType { database, process } }