一、前言
生活中的日志是記錄你生活的點點滴滴,讓它把你內心的世界表露出來,更好的詮釋自己的內心世界,而在開發者眼中的日志是我們排除問題的第一手資料,專案中的程式上線之后,一旦發生例外,第一件事就是先去查看日志是否有捕獲到什么例外資訊,然后再根據日志去排查問題,所以日志的重要性是非常高的,今天就分享一個簡單的本地日記工具類,
二、正文
1、代碼比較簡單,這里直接貼出日志的代碼,該類會在exe所在的目錄下生成一個檔案夾,然后每天生成一個文本來儲存日志資訊,這里我只添加了三個簡單的方法,有需要的可以自己改造成更高級的用法,
public static class LogUtil { private const int LOG_CONTENT_MAX_LENGTH = 800; static LogUtil() { string logDirPath = Path.Combine(Directory.GetCurrentDirectory(), "Log"); if (!Directory.Exists(logDirPath)) { Directory.CreateDirectory(logDirPath); } } private static string TestCurrentLogExists() { string logPath = Path.Combine(Directory.GetCurrentDirectory(), "Log", DateTime.Now.ToString("yyyy-MM-dd") + ".log"); if (!File.Exists(logPath)) { File.Create(logPath).Close(); } return logPath; } public static void Debug(string text) { WriteLog("Debug", text); }
public static void Error(string text) { WriteLog("Error", text); } public static void Info(string text) { WriteLog("Info", text); }
private static void WriteLog(string label, string log_content) { if (log_content.Length > LOG_CONTENT_MAX_LENGTH) { log_content = log_content.Substring(0, LOG_CONTENT_MAX_LENGTH); } var logPath = TestCurrentLogExists(); using (var fs = File.Open(logPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { fs.Position = fs.Length; byte[] bytes = Encoding.UTF8.GetBytes($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} {label} {log_content}{Environment.NewLine}"); fs.Write(bytes, 0, bytes.Length); } } }
2、使用示例,這里去遍歷一個空的List來觸發一個例外,然后看看日志有沒有幫我們記錄下例外資訊,
public partial class MainWindow : Window { private List<string> lists = null; public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { LogUtil.Info("這是一條普通的資訊!!!"); LogUtil.Debug("這是一條普通的除錯資訊!!!"); try { foreach (var item in lists) { Console.WriteLine(item); } } catch (Exception ex) { LogUtil.Error(ex.ToString()); throw; } } }
3、運行結果,可以看到exe所在的目錄下生成了一個Log檔案夾,目錄下也生成了一個以當日日期命名的.log檔案


4、打開日志,我們可以看到例外的資訊已經被記錄到日志檔案中,程式的哪個檔案,哪個方法里的哪一行的什么例外導致的都已經清晰可見,這樣就能方便定位的問題所在了

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/394896.html
標籤:.NET技术
