簡體   English   中英

在不使用第三方記錄器的情況下登錄C#應用程序

[英]Logging in C# application without using third party logger

我正在使用C#控制台應用程序,該應用程序計划使用Windows Task Scheduler自動運行。 我想使用時間戳逐步記錄在該應用程序中運行的信息。

我還需要確保日志文件的大小不超過10 MB,並且在發生這種情況時會被分解成新文件。 日志文件不得超過5個,如果文件超過5個,則最舊的一個必須自動刪除。

我不允許將任何第三方記錄器用作Log4net等。在這種情況下,我可以使用任何內置的Microsoft功能或類來解決此問題。 我非常願意使用自定義代碼。 我能夠記錄數據,但是刪除和拆分文件有點問題,任何指針都可以幫助您

要在C#中獲取文件的大小,請使用:

FileInfo fi = new FileInfo(logFilename);
var size = fi.Length;

size是文件的大小(以字節為單位)。 要檢查它是否大於5GB,請對照5 * 1024 * 1024進行檢查。

要將日志文件重命名為存檔文件,請使用:

System.IO.File.Move(logFilename, archiveFileName);

存檔文件名可以只是帶有日期后綴的日志文件名,或者類似的簡單名稱。

假設所有日志文件都放在一個文件夾中,則可以使用以下方法計算數量:

int fileCount = Directory.GetFiles(logFileFolder).Length;

要刪除最早的文件(前五個文件除外),請使用以下方法:

foreach (var fileInfo in new DirectoryInfo(logFileFolder)
    .GetFiles().OrderByDescending(f => f.LastWriteTime).Skip(5))
{
     fileInfo.Delete();
}

我認為這就是您所需要的。 用編寫日志語句時調用的方法將其包裝起來。

如果要使用Microsoft准備好的內置庫,請查看Enterprise Library 它包含一個日志記錄應用程序塊。 我認為您也可以下載源代碼並自己構建它,從而使您擺脫了下載DLL的限制。

但是,您當然也可以下載其他開源日志記錄框架(如NLog,我推薦)的源代碼並使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM