C#實現(xiàn)程序單例日志輸出功能
對于一個完整的程序系統(tǒng),一個日志記錄是必不可少的。可以用它來記錄程序在運行過程中的運行狀態(tài)和報錯信息。比如,那些不想通過彈框提示的錯誤,程序執(zhí)行過程中捕獲的異常等。
首先,在你的解決方案中,適當(dāng)?shù)哪夸浿行陆ㄒ粋€類,比如 LogManager:
編寫如下代碼:
/// <summary>
/// 日志管理
/// </summary>
public class LogManager
{
private string _logDir; // 日志文件存放目錄
private static LogManager m_LogInstance; // 靜態(tài)單例對象
// 靜態(tài)構(gòu)造函數(shù)
static LogManager()
{
m_LogInstance = new LogManager();
}
// 私有構(gòu)造函數(shù)(必備函數(shù),不允許外部對該類進行實例化)
private LogManager()
{
_logDir = Environment.CurrentDirectory + "\\Log";
this.DelOldFile();
}
/// <summary>
/// 屬性獲取單例對象
/// </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)多線程同時訪問同一個文件出錯
{
// 根據(jù)時間創(chuàng)建一個日志文件
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)于實現(xiàn)單例模式的一種方法。這樣,在你程序的需要位置執(zhí)行:
LogManager.LogInstance.WriteLog("產(chǎn)生了一條日志記錄");
就會在指定文件中參數(shù)一條日志記錄了。
即:2016-11-23 23:53:45 >> 產(chǎn)生了一條日志記錄
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#打印日志的方法總結(jié)
- c#快速寫本地日志方法
- 使用C#實現(xiàn)寫入系統(tǒng)日志
- C#中四步輕松使用log4net記錄本地日志的方法
- C#控制臺程序使用Log4net日志組件詳解
- C#實現(xiàn)寫系統(tǒng)日志的方法
- C#實現(xiàn)將程序運行信息寫入日志的方法
- C#實現(xiàn)將日志寫入文本文件的方法
- C#實現(xiàn)Log4Net日志分類和自動維護實例
- C# 微信支付 wx.chooseWXPay 簽名錯誤的解決方法
- C#中調(diào)用DLL時未能加載文件或程序集錯誤的處理方法(詳解)
- C# httpwebrequest訪問HTTPS錯誤處理方法
- C# 如何添加錯誤日志信息
相關(guān)文章
C#實現(xiàn)遞歸調(diào)用的Lambda表達式
這篇文章介紹了C#實現(xiàn)遞歸調(diào)用的Lambda表達式,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
詳解C#開發(fā)Android應(yīng)用程序的流程
在本篇文章里小編給大家分享了關(guān)于C#開發(fā)Android應(yīng)用程序的流程和相關(guān)技巧,需要的朋友們跟著學(xué)習(xí)下。2019-03-03
C# PC版微信消息監(jiān)聽自動回復(fù)的實現(xiàn)方法
這篇文章主要介紹了C# PC版微信消息監(jiān)聽自動回復(fù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05

