对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过d框提示的错误,程序执行过程中捕获的异常等。
首先,在你的解决方案中,适当的目录中新建一个类,比如 LogManager:
编写如下代码:
/// <summary> /// 日志管理 /// </summary> public class LogManager { private string _logDir; // 日志文件存放目录 private static LogManager m_LogInstance; // 静态单例对象 // 静态构造函数 static LogManager() { m_LogInstance = new LogManager(); } // 私有构造函数(必备函数,不允许外部对该类进行实例化) private LogManager() { _logDir = Environment.CurrentDirectory + "\Log"; this.Deloldfile(); } /// <summary> /// 属性获取单例对象 /// </summary> public static LogManager LogInstance { get { return m_LogInstance; } } /// <summary> /// 写入一条日志记录 /// </summary> /// <param name="pLog">日志记录内容</param> public voID WriteLog(string pLog) { lock (this._logDir) //排它锁:防止主程序中出现多线程同时访问同一个文件出错 { // 根据时间创建一个日志文件 var vDT = DateTime.Now; string vLogfile = string.Format("{0}\Log{1}{2}{3}.log",_logDir,vDT.Year,vDT.Month,vDT.Day); // 创建文件流,用于写入 using (fileStream fs = new fileStream(vLogfile,fileMode.Append)) { StreamWriter sw = new StreamWriter(fs); sw.Writeline("{0} >> {1}",vDT.ToString("yyyy-MM-dd HH:mm:ss"),pLog); sw.Flush(); sw.Close(); fs.Close(); } } } // 删除过期文件 private voID Deloldfile() { // 遍历指定文件夹下所有子文件,将一定期限前的日志文件删除。 if (!Directory.Exists(this._logDir)) { // 如果文件夹目录不存在 Directory.CreateDirectory(this._logDir); return; } var vfiles = (new DirectoryInfo(this._logDir)).Getfiles(); for (int i = vfiles.Length - 1; i >= 0; i--) { // 指定条件,然后删除 if (vfiles[i].name.Contains("Log")) { if ((DateTime.Now - vfiles[i].LastWriteTime).Days > 7) { vfiles[i].Delete(); } } } } } // end class
其中,第8行-第26行是关于实现单例模式的一种方法。这样,在你程序的需要位置执行:
LogManager.LogInstance.WriteLog("产生了一条日志记录");
就会在指定文件中参数一条日志记录了。
即:2016-11-23 23:53:45 >> 产生了一条日志记录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的C#实现程序单例日志输出功能全部内容,希望文章能够帮你解决C#实现程序单例日志输出功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)