Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 高负载web站点日志记录到文件的方法?_C#_Logging_Log4net - Fatal编程技术网

C# 高负载web站点日志记录到文件的方法?

C# 高负载web站点日志记录到文件的方法?,c#,logging,log4net,C#,Logging,Log4net,我需要将点击和转换跟踪(比IIS日志文件更具体、更集中)内置到现有网站。我期待着相当高的负荷。我研究了使用,特别是,但文档明确指出:“这种类型对于多线程操作不安全。” 有人能为这类重日志记录的解决方案提出一种可靠的方法吗?我真的很喜欢log4net给我的灵活性。我可以使用lock绕过缺乏安全多线程的问题吗?这会带来性能/争用问题吗?虽然FileAppender本身可能不适合于日志记录,但我当然希望通过log4net访问它的正常访问路由是线程安全的 从: log4net是线程安全的 换句话说,

我需要将点击和转换跟踪(比IIS日志文件更具体、更集中)内置到现有网站。我期待着相当高的负荷。我研究了使用,特别是,但文档明确指出:“这种类型对于多线程操作不安全。”


有人能为这类重日志记录的解决方案提出一种可靠的方法吗?我真的很喜欢log4net给我的灵活性。我可以使用
lock
绕过缺乏安全多线程的问题吗?这会带来性能/争用问题吗?

虽然FileAppender本身可能不适合于日志记录,但我当然希望通过log4net访问它的正常访问路由是线程安全的

从:

  • log4net是线程安全的
换句话说,要么主log4net框架执行足够的锁定,要么它有一个专用的日志线程,为日志消息的生产者/消费者队列提供服务


任何不是线程安全的日志框架都不会存在很长时间。

我也对答案感兴趣,但我会告诉你我在试图找到解决方案时被告知的内容

解决这个问题的简单方法是使用类似SQL数据库的东西。如果您想要的数据不适合这样做,您可以让每个页面访问写入自己的日志文件,然后定期合并日志文件


不过,我相信有更好的解决方案。

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

这里有一个链接,指向一个关于如何开始使用它的不错的教程:


使用syslog时,不会出现任何线程问题。Syslog,使用UDP将日志行发送到日志守护进程(可能在同一台机器上)

如果您有更多正在运行的进程/服务,那么这种方法尤其有效,因为所有日志行都聚集在一个查看工具中

如果你预计会有很重的负载,看看facebook的家伙是如何做到的:你可以使用他们的开源日志工具。我不认为你会击中他们的负载刚刚,所以你应该是安全的一段时间来

R