3

我有一个工具,我的团队用于各种管理任务,它处理各种远程调用、Active Directory 查找、调用脚本等,以支持数千台机器。我有大约十几个人在积极使用它,但是为了极客和进一步的发展,我想建立一些统计和使用记录(不是个人的,只是为了看看使用了什么以及使用了多少)。

我的问题是,在 .NET(特别是 C#)中记录这些信息的好(甚至是最好的)方式是什么?

我的第一个想法是 TXT 文件甚至是 XML 文件,但我不知道我真的想在以后一遍又一遍地加载一个未知大小的文件。所以我想到了 SQLite,但我不想在每台机器上安装 .SQlite,尽管也许我可以将它嵌入到 exe 中(它从共享运行,而不是大多数用户的安装,尽管我也有一个安装包它。

我真的不想使用很多文本文件,只是为了干净的文件夹。

任何符合以下标准的建议:

  1. 轻的
  2. 快速地
  3. 客户端没有安装
  4. 稳定 不易腐败
  5. 本地数据库,如

我试图用谷歌搜索,但我没有得到任何对我来说真正有意义的东西,可能是我不知道应该用谷歌搜索什么,因为这对我来说不是典型的使用模式。

4

3 回答 3

2

Microsoft SQL Server Compact是一个可嵌入、免费、可再分发的数据库引擎,具有适用于 .NET 的良好 API。无需安装;您只需从 .NET 项目中引用数据库引擎库即可。数据库是简单的文件,您可以存储在任何地方并像其他任何地方一样四处移动。

它与“真正的”SQL Server 非常相似,因此如果您需要,两者之间的数据迁移应该很容易,并且有很多工具可以帮助您。

于 2013-03-15T17:04:57.473 回答
2

您可以使用db4o。它是一个面向对象的数据库(无 SQL),可以直接保存您的对象 - 不需要对象映射、属性或任何配置开销,只需获取您的 POCO 并保存它们。您可以对查询使用不同的方法,例如 Query by example 或 SODA(类似于 Hibernate 的条件),它还具有完整的 LINQ 支持。可以将db4o用作嵌入式数据库(使用文件),内存占用非常小。无需安装,只需将 lib 包含到您的项目中即可。

例子:

var persons = db.Query<Person>( s => s.Age > 50 );
于 2013-03-15T17:08:55.520 回答
0

使用Log4Net并将数据接收器与您的应用程序分离。Log4Net 允许您登录到文件、数据库、Windows 事件日志等。您甚至可以通过日志记录级别(致命、错误、警告、信息等)和其他过滤条件,根据它来自的程序集/类将日志输出定向到不同的目的地。

您甚至可以编写自己的附加程序来满足您的需要。

全部通过更改您的 log4net 配置。您甚至可以在应用程序运行时调整 log4net 配置。例如,考虑一个长时间运行的守护进程,它设置了日志记录来捕获整个应用程序中相当高级别的消息。如果您的日志突然开始显示记录的错误突然增加,您可能希望将日志调低到更细粒度的级别以了解发生了什么。或者也许将其调低到可疑类或程序集的非常精细的级别,以隔离问题细节。

使用 log4net,您只需调整配置文件就可以做到这一点,而无需反弹守护程序。

于 2013-03-15T17:24:21.883 回答