C# 高负载web站点日志记录到文件的方法?
我需要将点击和转换跟踪(比IIS日志文件更具体、更集中)内置到现有网站。我期待着相当高的负荷。我研究了使用,特别是,但文档明确指出:“这种类型对于多线程操作不安全。”C# 高负载web站点日志记录到文件的方法?,c#,logging,log4net,C#,Logging,Log4net,我需要将点击和转换跟踪(比IIS日志文件更具体、更集中)内置到现有网站。我期待着相当高的负荷。我研究了使用,特别是,但文档明确指出:“这种类型对于多线程操作不安全。” 有人能为这类重日志记录的解决方案提出一种可靠的方法吗?我真的很喜欢log4net给我的灵活性。我可以使用lock绕过缺乏安全多线程的问题吗?这会带来性能/争用问题吗?虽然FileAppender本身可能不适合于日志记录,但我当然希望通过log4net访问它的正常访问路由是线程安全的 从: log4net是线程安全的 换句话说,
有人能为这类重日志记录的解决方案提出一种可靠的方法吗?我真的很喜欢log4net给我的灵活性。我可以使用
lock
绕过缺乏安全多线程的问题吗?这会带来性能/争用问题吗?虽然FileAppender本身可能不适合于日志记录,但我当然希望通过log4net访问它的正常访问路由是线程安全的
从:
- log4net是线程安全的
任何不是线程安全的日志框架都不会存在很长时间。我也对答案感兴趣,但我会告诉你我在试图找到解决方案时被告知的内容 解决这个问题的简单方法是使用类似SQL数据库的东西。如果您想要的数据不适合这样做,您可以让每个页面访问写入自己的日志文件,然后定期合并日志文件
不过,我相信有更好的解决方案。您可以查看Microsoft企业库中可用的日志应用程序块。它提供了一整套不同类型的记录器,以及一个方便的GUI配置程序,您可以指向app.config\web.config对其进行修改。因此,不需要自己筛选XML 这里有一个链接,指向一个关于如何开始使用它的不错的教程:
使用syslog时,不会出现任何线程问题。Syslog,使用UDP将日志行发送到日志守护进程(可能在同一台机器上) 如果您有更多正在运行的进程/服务,那么这种方法尤其有效,因为所有日志行都聚集在一个查看工具中 如果你预计会有很重的负载,看看facebook的家伙是如何做到的:你可以使用他们的开源日志工具。我不认为你会击中他们的负载刚刚,所以你应该是安全的一段时间来 R