[C#] Log 日誌在手,問題出走! -JY. MN 軟實力

介紹


    
    日誌(Log)這功能主要依程式設計需求,紀錄必要性的資料、數據與標籤,用途非常廣泛,可用於程式除錯、驗證結果與功能、程式判斷依據、是否有完整執行該段函式、是否有正常接收資訊、是否有正常發送資訊...等等的用途。對於程式設計者而言,程式驗證、除錯都有相當大的幫助。 對於大型專案使用者而言,軟體運行的細節面非常重要,然而這些細節面必需要仰賴 Log 來記錄,證明每個環節是否正常運行。 這次使用基本的記事本(文字文件)當成紀錄 Log 的檔案類型。在設定上,每天會建立一個記事本檔案,而每筆 Log 都會在內容後面紀錄電腦當下的時間,來表示發生當下的事情與時間。以下分別示範讀取與寫入兩個函式(Function):

說明

      
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace EX_Log
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            FlowControl();
        }

        public void FlowControl()
        {
            WriteLog("使用者註冊一般權限帳號");
            WriteLog("使用者ID:abcdef PS:123456 已於資料庫建檔");
            WriteLog("使用者完成註冊一般權限帳號");

            ReadLog(DateTime.Now.ToString("yyyMMdd"));
        }

        ///         /// Log 寫入
        ///         /// 內容
        public void WriteLog(string sMessage)
        {
            // Windows Forms 應用程式
            //string DirName = Appliaction.StartupPath + @"\Log\";
            // 主控台應用程式
            string DirName = AppDomain.CurrentDomain.BaseDirectory + @"\Log\";
            string FileName = DirName + DateTime.Now.ToString("yyyMMdd") + ".txt";

            // 檢查該資料夾是否存在
            if (!Directory.Exists(DirName))
                Directory.CreateDirectory(DirName);

            // 檢查該檔案是否存在
            if (!File.Exists(FileName))
                // 該檔案被建立完畢後,必須關閉 FileStream.
                File.Create(FileName).Close();

            using (StreamWriter sw = File.AppendText(FileName))
                sw.WriteLine("{0} {1}", sMessage, DateTime.Now.ToLongTimeString());
        }

        ///         /// Log 讀取
        ///         /// 讀取日期 yyyyMMdd
        public void ReadLog(string sDate)
        {
            // Windows Forms 應用程式
            //string DirName = Appliaction.StartupPath + @"\Log\";

            // 主控台應用程式
            string DirName = AppDomain.CurrentDomain.BaseDirectory + @"\Log\";
            string FileName = DirName + sDate + ".txt";

            if (File.Exists(FileName))
            {
                using (StreamReader sr = File.OpenText(FileName))
                {
                    string line;
                    // 確認每一行都有內容的情況,才會進行顯示。
                    while ((line = sr.ReadLine()) != null)
                        txb_Log.AppendText(line + "\n");
                }
            }
            else
            {
                MessageBox.Show(sDate + ": No Data!");
            }
        }
    }
}

結論

        以上範例表示單純的讀取、寫入的函式(Function),自行複製更改路徑後即可服用。相信未來讀者們在職場所接到的專案中,都會有必須要記錄 Log 的動作,此時可套用這兩個獨立的函式來快速建立簡易的 Log 功能。

留言

熱門文章