最近在開發(fā)基于.net6的一個(gè)數(shù)據(jù)監(jiān)控軟件,使用其它開源log庫(kù)都有點(diǎn)麻煩,就想著對(duì)Console.WriteLine()方法重定向到文件,非常方便的實(shí)現(xiàn)日志記錄功能,同時(shí)也不影響之前的代碼結(jié)構(gòu)。文章來源:http://www.zghlxwxcb.cn/news/detail-810458.html
public class LogTextWriter : TextWriter
{
public LogTextWriter()
{
}
public override Encoding Encoding => Encoding.UTF8;
public EventHandler<string> OnLogging;
public override void Write(string? value)
{
string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string path = GetPath();
File.AppendAllText(path,$"{timestamp} - {value}");
}
public override void WriteLine(string? value)
{
if(value!=null)
{
OnLogging?.Invoke(this,value);
string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string path = GetPath();
File.AppendAllText(path, $"{timestamp} - {value}{Environment.NewLine}");
}
}
private string GetPath()
{
if(!Directory.Exists("./log"))
{
Directory.CreateDirectory("./log");
}
// 獲取當(dāng)前日期和時(shí)間作為日志文件名的一部分
string currentDateTime = DateTime.Now.ToString("yyyy_MM_dd");
// 構(gòu)建日志文件路徑
string logFilePath = $"log/log_{currentDateTime}.txt";
return logFilePath;
}
private static LogTextWriter _instance = new LogTextWriter();
public static LogTextWriter GetInstance()
{
return _instance;
}
}
軟件開始的地方要設(shè)置該重定向:文章來源地址http://www.zghlxwxcb.cn/news/detail-810458.html
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Console.SetOut(LogTextWriter.GetInstance());
Console.WriteLine("程序啟動(dòng)成功!");
}
到了這里,關(guān)于C#輕量級(jí)日志功能(只有一個(gè)類)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!