2

在最近的一个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# 记录日志


五毛程序员
244 声望8 粉丝