高负载网站日志记录到文件的方法?

时间:2009-07-21 13:55:51

标签: c# logging log4net

我需要在现有网站上构建点击和转化跟踪(比IIS日志文件更具体,更专注)。我期待相当高的负荷。我使用log4net进行了调查,特别是FileAppender Class,但文档明确指出:“此类型对多线程操作不安全。”

有人可以建议一种强有力的方法来解决此类重型伐木问题吗?我真的很喜欢log4net给我的灵活性。我可以使用lock解决缺少安全多线程的问题吗?这会引入性能/争用问题吗?

4 个答案:

答案 0 :(得分:1)

虽然FileAppender本身对于日志记录可能不安全,但我确实期望通过log4net到它的正常访问路由是线程安全的。

来自FAQ

  • log4net是线程安全的。

换句话说,主log4net框架可以进行足够的锁定,或者它有一个专用的日志记录线程为日志消息的生产者/消费者队列服务。

任何非线程安全的日志记录框架都无法存活很长时间。

答案 1 :(得分:1)

您可以查看Microsoft企业库中提供的日志记录应用程序阻止。它提供了大量不同类型的记录器,以及一个方便的GUI配置器,您可以指向app.config \ web.config以进行修改。所以不需要自己筛选XML。

这是一个关于如何开始使用它的精彩教程的链接:

http://elegantcode.com/2009/01/20/enterprise-library-logging-101/

答案 2 :(得分:0)

我也对答案很感兴趣,但是当我试图找到解决方案时,我会告诉你我被告知的事情。

一种简单的方法是使用像SQL数据库这样的东西。如果您想要的数据不太适合,那么您可以让每个页面访问权限写入自己的日志文件,然后定期合并日志文件。

但是,我确信有更好的解决方案。

答案 3 :(得分:0)

使用syslog时,您不会遇到任何线程问题。 Syslog使用UDP将日志行发送到logdaemon(可能位于同一台机器上)。

如果您有更多正在运行的流程/服务,那么工作效果特别好,因为所有日志行都汇总在一个查看工具中。

如果你期望真的很重,看看facebook的人怎么做:http://developers.facebook.com/scribe/你可以使用他们的开源logtool。我认为你还没有达到他们的负荷,所以你应该在一段时间内保持安全!

[R