欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實(shí)現(xiàn)程序單例日志輸出功能

 更新時(shí)間:2017年08月14日 10:01:10   作者:云夢(mèng)鴻  
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)程序單例日志輸出功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

對(duì)于一個(gè)完整的程序系統(tǒng),一個(gè)日志記錄是必不可少的??梢杂盟鼇?lái)記錄程序在運(yùn)行過(guò)程中的運(yùn)行狀態(tài)和報(bào)錯(cuò)信息。比如,那些不想通過(guò)彈框提示的錯(cuò)誤,程序執(zhí)行過(guò)程中捕獲的異常等。

首先,在你的解決方案中,適當(dāng)?shù)哪夸浿行陆ㄒ粋€(gè)類,比如 LogManager:

編寫如下代碼:

/// <summary>
  /// 日志管理
  /// </summary>
  public class LogManager
  {
    private string _logDir; // 日志文件存放目錄

    private static LogManager m_LogInstance; // 靜態(tài)單例對(duì)象
    // 靜態(tài)構(gòu)造函數(shù)
    static LogManager()
    {
      m_LogInstance = new LogManager();
    }
    // 私有構(gòu)造函數(shù)(必備函數(shù),不允許外部對(duì)該類進(jìn)行實(shí)例化)
    private LogManager()
    {
      _logDir = Environment.CurrentDirectory + "\\Log";
      this.DelOldFile();
    }
    /// <summary>
    /// 屬性獲取單例對(duì)象
    /// </summary>
    public static LogManager LogInstance
    {
      get { return m_LogInstance; }
    }

    /// <summary>
    /// 寫入一條日志記錄
    /// </summary>
    /// <param name="pLog">日志記錄內(nèi)容</param>
    public void WriteLog(string pLog)
    {
      lock (this._logDir) //排它鎖:防止主程序中出現(xiàn)多線程同時(shí)訪問(wèn)同一個(gè)文件出錯(cuò)
      {
        // 根據(jù)時(shí)間創(chuàng)建一個(gè)日志文件
        var vDT = DateTime.Now;
        string vLogFile = string.Format("{0}\\Log{1}{2}{3}.log",_logDir,vDT.Year,vDT.Month,vDT.Day);
        // 創(chuàng)建文件流,用于寫入
        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();
        }
      }
    }

    // 刪除過(guò)期文件
    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行是關(guān)于實(shí)現(xiàn)單例模式的一種方法。這樣,在你程序的需要位置執(zhí)行:

LogManager.LogInstance.WriteLog("產(chǎn)生了一條日志記錄");

就會(huì)在指定文件中參數(shù)一條日志記錄了。

即:2016-11-23 23:53:45  >>  產(chǎn)生了一條日志記錄

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    這篇文章介紹了C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C# 監(jiān)控 Windows 文件夾的方法

    C# 監(jiān)控 Windows 文件夾的方法

    這篇文章主要介紹了C# 監(jiān)控 Windows 文件夾的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳解C#開發(fā)Android應(yīng)用程序的流程

    詳解C#開發(fā)Android應(yīng)用程序的流程

    在本篇文章里小編給大家分享了關(guān)于C#開發(fā)Android應(yīng)用程序的流程和相關(guān)技巧,需要的朋友們跟著學(xué)習(xí)下。
    2019-03-03
  • C#多線程Thread使用示例詳解

    C#多線程Thread使用示例詳解

    這篇文章主要為大家詳細(xì)介紹了C#多線程Thread使用示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#進(jìn)行PDF表單域的創(chuàng)建填寫與刪除操作

    C#進(jìn)行PDF表單域的創(chuàng)建填寫與刪除操作

    通常情況下,PDF文件是不可編輯的,但PDF表單提供了一些可編輯區(qū)域,允許用戶填寫和提交信息,本文主要介紹了如何使用C#實(shí)現(xiàn)PDF表單域的創(chuàng)建,填寫與刪除操作,感興趣的可以了解下
    2024-04-04
  • C#中Json字符串的各種應(yīng)用類實(shí)例講解

    C#中Json字符串的各種應(yīng)用類實(shí)例講解

    這篇文章主要介紹了C#中Json字符串的各種應(yīng)用類實(shí)例講解的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • C# PC版微信消息監(jiān)聽自動(dòng)回復(fù)的實(shí)現(xiàn)方法

    C# PC版微信消息監(jiān)聽自動(dòng)回復(fù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C# PC版微信消息監(jiān)聽自動(dòng)回復(fù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • c# socket編程udp客戶端實(shí)現(xiàn)代碼分享

    c# socket編程udp客戶端實(shí)現(xiàn)代碼分享

    這篇文章主要介紹了c# socket編程實(shí)現(xiàn)udp客戶端,大家參考使用吧
    2013-12-12
  • 基于C#方法重載的總結(jié)詳解

    基于C#方法重載的總結(jié)詳解

    本篇文章是對(duì)C#中方法重載進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 理解C#中的事件

    理解C#中的事件

    這篇文章主要介紹了理解C#中的事件,本文講解了使用委托中的問(wèn)題、事件的出現(xiàn)、深入理解事件、C#屬性的概念、事件代碼的轉(zhuǎn)換等內(nèi)容,需要的朋友可以參考下
    2015-02-02

最新評(píng)論