2011-12-01 41 views
1

我曾考虑使用log4net登录数据库集群(目前我们正在使用log4net登录到单个数据库),但Scribe看起来像是bettersolution,我还没有取得太多的成功,也没有很多Scribe .net API/Interfaces的例子。如何开始在.net抄写员?

我们与每百万每天加推的抄写架构命中一个中央资料库的多个应用服务器并让这做耗时的活动似乎是向前迈出的合乎逻辑的方式。

有谁知道我在哪里可以找到很好的.Net隶的例子,以及是否有任何其他可扩展的分布式日志我应该考虑的选项?

+0

有没有一种方法可以改善我的问题,我在问如何开始使用抄写员,或者我应该考虑的任何替代方法。我已经更新了我的问题,我希望这是您的喜好。 –

回答

2

我无法帮助你抄写,所以也许我的回答没有帮助,甚至毫无意义。

我尽量给我们的变种

以及是否有任何其他可扩展的分布式日志我 应该考虑的选项?

在我们的项目中,我们使用NLog具有类似的目标。您不会提供有关所需可扩展性的详细信息,因此我不能确定它是否适合您。

NLog在源代码级别与log4net兼容。我的意思是它需要小的代码更改,以适应您现有的log4net日志代码通过NLog登录。

看看支持Targets。你可以按原样使用Network Target,或者如果你决定使用它,写你自己的(这很简单)与提到的抄写员沟通。

可以使用Log2Console的源代码作为接收器的例子。

我不能给准备使用日志服务器解决方案(除广告如直布罗陀),但是我们做,你可以自己编写。

个人而言,我不会推荐使用任何记录系统(包括log4net的,NLOG等)的直接数据库日志记录功能。更好地提供额外的级别,这将与日志提供者进行通信(例如通过网络),汇总数据并像在Scribe中那样对数据库(日志文件)进行批量更新。它可以提高日志子系统的整体性能。

+0

您知道网络日志可以批量插入数据库吗?一次写100个,你可以使用,这是我们目前使用的,它可以处理很多! –

+0

是的,但AFAIK log4net通过将它们封装到单个事务中来执行批量插入。当然,它会逐一提高性能,但在某些情况下(通过使用DBMS特定的BULK INSERT操作)可以实现更好的性能(大量插入)。 MS SQL Server中它可以通过SqlBulkCopy的完成的情况下:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx log4net的选择一般的解决方案,因为它提供ADO.NET包装。你可以自己扩展它的默认实现,当然也可以使用DBMS特定的性能调整。 –

+1

我之所以提出我的建议,是因为通过使用一些中间件,您可以以更高的速率收集数据,并与解决方案进行大单插入比较,其中每个记录器进行部分更新,并在记录器数量(以及DBMS连接数量)增长时强调DBMS 。如果您有大量的记录数据和/或记录器,它可以更高效。 –