C#實(shí)現(xiàn)程序單例日志輸出功能
對(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í)有所幫助,也希望大家多多支持腳本之家。
- C#打印日志的方法總結(jié)
- c#快速寫本地日志方法
- 使用C#實(shí)現(xiàn)寫入系統(tǒng)日志
- C#中四步輕松使用log4net記錄本地日志的方法
- C#控制臺(tái)程序使用Log4net日志組件詳解
- C#實(shí)現(xiàn)寫系統(tǒng)日志的方法
- C#實(shí)現(xiàn)將程序運(yùn)行信息寫入日志的方法
- C#實(shí)現(xiàn)將日志寫入文本文件的方法
- C#實(shí)現(xiàn)Log4Net日志分類和自動(dòng)維護(hù)實(shí)例
- C# 微信支付 wx.chooseWXPay 簽名錯(cuò)誤的解決方法
- C#中調(diào)用DLL時(shí)未能加載文件或程序集錯(cuò)誤的處理方法(詳解)
- C# httpwebrequest訪問(wèn)HTTPS錯(cuò)誤處理方法
- C# 如何添加錯(cuò)誤日志信息
相關(guān)文章
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#開發(fā)Android應(yīng)用程序的流程
在本篇文章里小編給大家分享了關(guān)于C#開發(fā)Android應(yīng)用程序的流程和相關(guān)技巧,需要的朋友們跟著學(xué)習(xí)下。2019-03-03C#進(jìn)行PDF表單域的創(chuàng)建填寫與刪除操作
通常情況下,PDF文件是不可編輯的,但PDF表單提供了一些可編輯區(qū)域,允許用戶填寫和提交信息,本文主要介紹了如何使用C#實(shí)現(xiàn)PDF表單域的創(chuàng)建,填寫與刪除操作,感興趣的可以了解下2024-04-04C#中Json字符串的各種應(yīng)用類實(shí)例講解
這篇文章主要介紹了C#中Json字符串的各種應(yīng)用類實(shí)例講解的相關(guān)資料,需要的朋友可以參考下2015-10-10C# 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-05c# socket編程udp客戶端實(shí)現(xiàn)代碼分享
這篇文章主要介紹了c# socket編程實(shí)現(xiàn)udp客戶端,大家參考使用吧2013-12-12