C# .NET使用日志记录的最佳实践-文本文件?数据库

C# .NET使用日志记录的最佳实践-文本文件?数据库,c#,.net,database,sqlite,usage-statistics,C#,.net,Database,Sqlite,Usage Statistics,我有一个工具,我的团队用于各种管理任务,它处理各种远程调用、Active Directory查找、调用脚本等,以支持数千台机器。我有十几个人在积极地使用它,但对于geekdom和进一步的开发,我想建立一些统计和使用日志(不是个人的,只是看看使用了什么和多少) 我的问题是,在.NET(特别是C#)中,什么是记录这些信息的好方法(甚至是最好的方法) 我的第一个想法是一个TXT文件,甚至是一个XML文件,但我不知道我真的想在以后一次又一次地加载一个未知大小的文件。所以我考虑了SQLite,但我不想在每

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

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

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

我真的不想使用大量的文本文件,只是为了干净的文件夹

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

  • 轻量
  • 快速
  • 客户端上没有安装
  • 稳定不易腐败
  • 本地数据库类
  • 我试着用谷歌搜索这个,但我没有得到任何对我来说真正有意义的东西,可能是因为我不知道我应该用谷歌搜索什么,因为这对我来说不是一个典型的使用模式。

    是一个可嵌入、免费、可再发布的数据库引擎,具有良好的.NET API。无需安装;您只需参考数据库引擎即可数据库是一种简单的文件,可以存储在任何地方,也可以像其他文件一样四处移动

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

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

    例如:

    var persons = db.Query<Person>( s => s.Age > 50 );
    
    var persons=db.Query(s=>s.Age>50);
    
    使用该数据接收器并将其与应用程序分离。Log4Net允许您登录到文件、数据库、Windows事件日志和其他。您甚至可以根据日志输出的程序集/类,通过日志记录级别(致命、错误、警告、信息等)和其他筛选条件,将日志输出定向到不同的目标

    您甚至可以编写自己的appender来完成所需的操作

    全部通过更改Log4NET配置。您甚至可以在应用程序运行时调整Log4NET配置。例如,考虑一个长时间运行的守护进程,用日志设置来捕获跨应用程序的相当高级别的消息。如果日志记录突然显示日志错误突然增加,您可能需要拨日志记录。到一个更精细的级别,以了解正在发生的事情。或者,可以对可疑的类或程序集进行细化,以隔离问题的详细信息


    使用log4net,您只需调整配置文件,而无需跳转守护进程即可完成此操作。

    这取决于我们在这里讨论的数据量。也许您可以使用Microsoft SQL Server Compact 4.0使用的字段、使用的函数次数、失败的Active Directory搜索(我允许使用通配符和FindOne方法,这在一定程度上无法加速大多数搜索)。此外,我希望有些东西具有时间跟踪功能,因此数据不会针对所有统计数据进行规范化。@Peretz不需要在客户端计算机上安装外接程序或安装程序?关闭这是荒谬的。请任何一位关闭者解释一下这是如何过于本地化的?我现在正在查看页面,我可能会看到两个问题:1.我是否不需要在客户端上安装任何新的东西?2.它说它嵌入到应用程序/文件夹中?因此如果它从共享运行,谁的数据接管了?奇怪的是,我希望每台机器/用户的信息可以轻松恢复。我看到我们已经安装了3.5,因此这可能会起作用,取决于数据库实际驻留的方式。1.数据库gine是作为DLL实现的。您需要将该DLL作为应用程序二进制文件的一部分重新分发。如果愿意,您可以将其放入共享中。不过,不需要安装。2.这取决于您。有一个“开放数据库”方法,传入文件名。您可以为所有用户打开一个公共文件,也可以为每个用户打开一个文件。您可以决定将文件存储在何处。它将位于%userProfile%\My Documents\目录中。最后一个问题是,如果以前没有文档,compact framework是否支持动态生成文件?我只是诚实地尝试过这与.txt,html。我将研究这个太,它似乎很有趣