最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

首先,在你的解決方案中,適當(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í)訪問同一個(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();
        }
      }
    }

    // 刪除過期文件
    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)生了一條日志記錄

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

相關(guān)文章

  • C#使用Objects?Comparer進(jìn)行對(duì)象比較

    C#使用Objects?Comparer進(jìn)行對(duì)象比較

    本文主要介紹了C#使用Objects?Comparer進(jìn)行對(duì)象比較,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • C# 中屬性PropertyInfo的setvalue用法說明

    C# 中屬性PropertyInfo的setvalue用法說明

    這篇文章主要介紹了C# 中屬性PropertyInfo的setvalue用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#實(shí)現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法

    C#實(shí)現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法,可實(shí)現(xiàn)將bmp格式位圖轉(zhuǎn)換成ico格式圖標(biāo)的功能,需要的朋友可以參考下
    2015-06-06
  • C#操作IIS程序池及站點(diǎn)的創(chuàng)建配置實(shí)現(xiàn)代碼

    C#操作IIS程序池及站點(diǎn)的創(chuàng)建配置實(shí)現(xiàn)代碼

    最近在做一個(gè)WEB程序的安裝包;對(duì)一些操作IIS進(jìn)行一個(gè)簡單的總結(jié);主要包括對(duì)IIS進(jìn)行站點(diǎn)的新建以及新建站點(diǎn)的NET版本的選擇,還有針對(duì)IIS7程序池的托管模式以及版本的操作
    2013-03-03
  • C#實(shí)現(xiàn)簡單打字游戲

    C#實(shí)現(xiàn)簡單打字游戲

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡單打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • c#反射機(jī)制學(xué)習(xí)和利用反射獲取類型信息

    c#反射機(jī)制學(xué)習(xí)和利用反射獲取類型信息

    反射(Reflection)是.NET中的重要機(jī)制,通過放射,可以在運(yùn)行時(shí)獲得.NET中每一個(gè)類型(包括類、結(jié)構(gòu)、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等,還可以獲得每個(gè)成員的名稱、限定符和參數(shù)等,有了反射,即可對(duì)每一個(gè)類型了如指掌
    2014-01-01
  • C#將字母或數(shù)字加密成字母的方法

    C#將字母或數(shù)字加密成字母的方法

    這篇文章主要介紹了C#將字母或數(shù)字加密成字母的方法,涉及C#操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C# 對(duì)象映射的高性能方案

    C# 對(duì)象映射的高性能方案

    這篇文章主要介紹了C# 對(duì)象映射的高性能方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,有需要的朋友可以借鑒參考下
    2020-12-12
  • c#根據(jù)文件類型獲取相關(guān)類型圖標(biāo)的方法代碼

    c#根據(jù)文件類型獲取相關(guān)類型圖標(biāo)的方法代碼

    c#根據(jù)文件類型獲取相關(guān)類型圖標(biāo)的方法代碼,需要的朋友可以參考一下
    2013-05-05
  • c# 進(jìn)程和線程的區(qū)別與聯(lián)系

    c# 進(jìn)程和線程的區(qū)別與聯(lián)系

    這篇文章主要介紹了c# 進(jìn)程和線程的區(qū)別與聯(lián)系,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論

武川县| 赤城县| 阿合奇县| 新安县| 华亭县| 三门县| 积石山| 揭东县| 黄大仙区| 丹东市| 双江| 固安县| 孟连| 奉节县| 天柱县| 汕头市| 鹤岗市| 夏河县| 墨脱县| 当涂县| 桃园县| 湟源县| 漯河市| 板桥市| 弋阳县| 循化| 鸡泽县| 神农架林区| 隆昌县| 讷河市| 兴山县| 洛南县| 普兰店市| 伊宁县| 什邡市| 靖边县| 安达市| 胶州市| 北流市| 乃东县| 若羌县|