全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

首先,在你的解决方案中,适当的目录中新建一个类,比如 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#打印日志的方法总结  # c#快速写本地日志方法  # 使用C#实现写入系统日志  # C#中四步轻松使用log4net记录本地日志的方法  # C#控制台程序使用Log4net日志组件详解  # C#实现写系统日志的方法  # C#实现将程序运行信息写入日志的方法  # C#实现将日志写入文本文件的方法  # C#实现Log4Net日志分类和自动维护实例  # C# 微信支付 wx.chooseWXPay 签名错误的解决方法  # C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)  # C# httpwebrequest访问HTTPS错误处理方法  # C# 如何添加错误日志信息  # 过程中  # 产生了  # 主程序  # 可以用  # 遍历  # 会在  # 不存在  # 报错  # 必不可少  # 创建一个  # 它来  # 多线程  # 大家多多  # 新建一个  # 运行状态  # 目录中  # return  # LogInstance  # DelOldFile  # m_LogInstance 


相关文章: 广州建站公司哪家好?十大优质服务商推荐  如何用VPS主机快速搭建个人网站?  C#如何序列化对象为XML XmlSerializer用法  油猴 教程,油猴搜脚本为什么会网页无法显示?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何在阿里云购买域名并搭建网站?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  历史网站制作软件,华为如何找回被删除的网站?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何快速打造个性化非模板自助建站?  5种Android数据存储方式汇总  如何批量查询域名的建站时间记录?  建站之星展会模版如何一键下载生成?  建站之星如何保障用户数据免受黑客入侵?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  浅析上传头像示例及其注意事项  学校为何禁止电信移动建设网站?  焦点电影公司作品,电影焦点结局是什么?  Android自定义控件实现温度旋转按钮效果  如何在阿里云虚拟服务器快速搭建网站?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  建站主机选虚拟主机还是云服务器更好?  建站之星官网登录失败?如何快速解决?  建站168自助建站系统:快速模板定制与SEO优化指南  建站主机服务器选型指南与性能优化方案解析  高性价比服务器租赁——企业级配置与24小时运维服务  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何基于云服务器快速搭建个人网站?  招商网站制作流程,网站招商广告语?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  如何通过可视化优化提升建站效果?  太平洋网站制作公司,网络用语太平洋是什么意思?  香港服务器租用费用高吗?如何避免常见误区?  如何快速辨别茅台真假?关键步骤解析  专业公司网站制作公司,用什么语言做企业网站比较好?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何在VPS电脑上快速搭建网站?  如何用腾讯建站主机快速创建免费网站?  如何快速搭建高效可靠的建站解决方案?  网站制作模板下载什么软件,ppt模板免费下载网站?  制作网站外包平台,自动化接单网站有哪些?  如何在阿里云完成域名注册与建站?  定制建站哪家更专业可靠?推荐榜单揭晓  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。