簡單的C#日誌類

simonsundev發表於2019-02-16

在最近的一個C#專案裡需要列印日誌,整理出一個工具類。程式碼如下:

public class Logger
{
    private static readonly Logger Logg = new Logger();
    private string _className;
    private Logger()
    {

    }

    public static Logger GetLogger(string className)
    {
        Logg._className = className;
        return Logg;
    }
    public void WriteLogs(string dirName, string type, string content)
    {
        string path = AppDomain.CurrentDomain.BaseDirectory;
        if (!string.IsNullOrEmpty(path))
        {
            path = AppDomain.CurrentDomain.BaseDirectory + dirName;
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            path = path + "\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
            if (!File.Exists(path))
            {
                FileStream fs = File.Create(path);
                fs.Close();
            }
            if (File.Exists(path))
            {
                StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default);
                sw.WriteLineAsync(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + (Logg._className ?? "") + " : " + type + " --> " + content);
                sw.Close();
            }
        }
    }

    private void Log(string type, string content)
    {
        WriteLogs("logs", type, content);
    }

    public void Debug(string content)
    {
        Log("Debug", content);
    }

    public void Info(string content)
    {
        Log("Info", content);
    }

    public void Warn(string content)
    {
        Log("Warn", content);
    }

    public void Error(string content)
    {
        Log("Error", content);
    }

    public void Fatal(string content)
    {
        Log("Fatal", content);
    }
}

使用方法:

Logger log = Logger.GetLogger("class_name");
log.Info("this is info");

在VS工程的/bin/Debug/logs目錄下,儲存著以時間命名的log日誌,如 20180328.log,日誌記錄如下:

2018-03-28 17:33:43 class_name : Info --> this is info

參考:
C# 記錄日誌

相關文章