首页 > 编程 > C# > 正文

C#实现程序单例日志输出功能

2020-01-24 00:33:29
字体:
来源:转载
供稿:网友

对于一个完整的程序系统,一个日志记录是必不可少的。可以用它来记录程序在运行过程中的运行状态和报错信息。比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等。

首先,在你的解决方案中,适当的目录中新建一个类,比如 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  >>  产生了一条日志记录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表