在混合语言环境中自定义日志记录

本文关键字:自定义 日志 记录 环境 混合 语言 | 更新日期: 2023-09-27 18:19:07

我的任务是在一个更大的项目中引入日志记录。我有以下要求:

  • 必须从Visual Studio的c++产品,c#产品,桌面应用程序,windows服务中启用对同一文件的日志记录,并且多个进程应该能够一次写入日志文件。
  • 日志的格式是自定义的(分号分隔字段,类似于"custom_date;custom_time;the_rest;of_the_fields")。
  • 日志文件有大小限制
  • 有主要的。log文件和旧的。bak文件,当新的。log文件被创建时。bak文件被删除,当前的。log被重命名为。bak。
  • 在一种特殊情况下,日志文件的名称取决于创建时间。在这种情况下没有多进程写操作。

现在,我可以推出自己的实现,但如果有现成的满足所有需求的免费库就太好了。有人知道有这样的图书馆吗?

在混合语言环境中自定义日志记录

您的许多需求(我认为除了语言独立性之外的所有需求)都由log4net满足

当你想使用几个软件组件来使用日志记录器时,我建议你自己写一个windows服务,因为它可以被你所有类型的客户端软件(c++, c#,…)使用

也许您可以直接写入事件日志

我推荐NLog,满足你的大部分需求

使用微软的企业异常和日志应用程序块。它满足你所有的要求。一切都可以通过网络配置。Config或app.config,并允许使用模板来记录特定的细节。还要注意的是,Microsoft已经包含了一个滚动类型记录器,它将根据大小或日期/时间自动启动一个新文件。它是一个完整的包,你想做任何类型的日志,MSMQ, SQL,平面文件,windows事件日志等。

Log4Net可以帮助您实现第2点和第3点,对于第1点,第4点和第5点,我建议您编写一个WebService,它可以完成在日志中写入,创建,删除等所有工作