繁体   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