65.9K
CodeProject 正在变化。 阅读更多。
Home

适用于 Applicative 和 ASP.NET 的简单日志记录器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.31/5 (5投票s)

2010年4月3日

CPOL

2分钟阅读

viewsIcon

19216

downloadIcon

185

限制日志记录的大小

引言

我编写了一个 Pocket PC 程序,需要将错误记录到文件中,但我不希望文件无限制地增长,直到 SD RAM 空间耗尽。

背景

我知道……有很多代码可以用来将错误记录到文件、XML、注册表等。

如果你在服务器上编写每天、每小时等运行的服务,你会每次都记录到一个不断增长的文件中吗?你不是服务器的管理员,无法进行清理,但如果出现问题,你需要查看日志文件才能知道发生了什么。如果你编写一个 Pocket PC 应用程序,需要记录正在发生的事情,资源有限,不可能无限增长。是的,可以使用注册表来记录内容,但它会随着时间的推移不断增大。

Using the Code

在类的开头,你将看到以下内容

#region
Member(s) and Constants
// File Size max line 1000 

const long MAXFILE_LINE = 1000;

每个日志都是一行文本条目,常量 MAXFILE_LINE 是日志重新开始到第 1 行之前的最大行数……循环日志。根据你的需要增加或减少。

日志文件会是什么样子?

   
2009/09/21 10:37:14 LDapSynchro--> Starting Process
2009/09/21 10:37:25 LDapSynchro--> Finished processing
2009/09/21 10:42:56 LDapSynchro--> Starting Process
2009/09/21 10:43:09 LDapSynchro--> Finished processing
2009-10-14 13:43:32 LDapSynchro--> Starting Process
2009-10-14 13:43:46 LDapSynchro--> Finished processing
2009-10-14 13:44:01 LDapSynchro--> Starting Process
2009-10-14 13:44:14 LDapSynchro--> Finished processing        

文件是简单的文本(开头的奇怪字符是一个二进制计数器)。在这个例子中,我没有用户,而只是一个名为 LDapSynchro 的服务。简单而有效。

如何使用?

  1. 实例化类
    m_MyLogger = new clsFileLogger(); 
  2. 告诉类文件名和位置
    strFileLogger = Directory.GetCurrentDirectory() + \\MyLog.log; 
    m_MyLogger.Filename = strFileLogger;
  3. 如果你需要,可以提供一个默认用户名。
  4. 然后使用函数 LogError,它有 3 个重载。
  5. 最后,使用 Close() 函数,它也会释放分配的内存(在 Pocket PC 上很重要)。

关注点

有很多复杂的类用于日志记录,但它们体积庞大,并且认为日志记录的空间是无限的,但在现实生活中并非如此。而且不要忘记这是一个循环日志记录器,这意味着很多。我可以要求客户将这个简单的 LogFile 发给我,以便我查看并了解正在发生的事情。它适用于 Pocket PC、Mobile、Applicative 和 ASP.NET。

历史

  • 这是版本 1.00。到目前为止,我已经将其用于 3 个不同的项目,并且到目前为止一切都很好。
© . All rights reserved.