天天看點

C# 列印日志,儲存為txt

using System;
using System.IO;
using System.Text;

namespace PrintLog
{
    public class Util
    {
        /*
         * 在這裡使用單例模式有幾個好處:
         * 1.保證了全局對象的唯一性
         * 2.保證了線程安全
         */
        public static readonly FaceLog Instance = new FaceLog();
        //這裡提供了一個供外部通路本class的靜态方法,可以直接通路
        public static FaceLog GetInstance()
        {
            return Instance;
        }

        #region 公共屬性
        public string FileStartupPath
        {
            //擷取目前運作程式的目錄
            get { return Environment.CurrentDirectory; }
        }

        public string FileLogName
        {
            get
            {
                // 檔案全路徑
                return FileStartupPath + @"\Logs\Info_" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
            }
        }
        #endregion

        /// <summary>
        /// 寫入内容
        /// </summary>
        /// <param name="infoMsg">要寫入的資訊</param>
        public void AppendInfoLog(string infoMsg)
        {
            string Folder = FileStartupPath + @"\Logs";
            if (!System.IO.Directory.Exists(Folder))
                System.IO.Directory.CreateDirectory(Folder);
            using (TextWriter fw = new StreamWriter(FileInfoName, true))
            {
                try
                {
                    FileInfo fi = new FileInfo(FileInfoName);
                    //判斷檔案内是否有内容
                    if (fi.Length == 0)
                    {
                        fw.WriteLine("這是第一次寫入内容");
                    }
                    fw.WriteLine("===========" + DateTime.Now.ToString() + "===========");
                    fw.WriteLine(infoMsg);
                    fw.WriteLine("======================");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
                finally
                {
                    fw.Close();
                    fw.Dispose();
                }
            }
        }
    }
}