从ASP.NET应用程序写入IIS日志

问题描述 投票:8回答:4

我想让我的ASP.NET应用程序在某处的日志中写入行。 IIS是否提供任何内置方式来记录ASP.NET日志消息?我当时在想可能有一种方法可以捕获对System.Diagnostics.Debug.WriteLine()的调用,但是我找不到任何方法。

asp.net iis logging iis-7 remote-debugging
4个回答
8
投票

要捕获Debug.WriteDebug.WriteLine,请使用DebugView from sysinternals

http://technet.microsoft.com/en-us/sysinternals/bb896647

当然,您必须使用Debug=true进行编译,否则根本不会调用这些函数。因此,Debug.Write是仅用于实时测试和调试应用程序的好方法,而不是通常保留错误日志的解决方案。对于您想保存错误的情况,我认为您需要使用其他用户建议的一个库,或者在事件查看器中直接编写您的错误。

ps:由于某些原因,版本4.78在Windows XP上不起作用,并且我切换回4.77


7
投票

尝试Response.AppendToLog(),这将写入IIS日志文件。很好,因为它不需要任何其他软件。唯一的缺点是您的日志文件可能很大。我主要使用它来标识IIS日志中记录的内容。例如。在用户登录时输入用户名,您可以跟踪他们的会话。


2
投票

我通常要做的是使用第三方记录框架,并通过配置文件配置框架(即无需重新编译)。

我使用的框架是:

  • [log4net-具有很多所谓的“ appenders”,它们可以写入不同的目标,例如Windows事件日志,数据库或日志文件。
  • NLog-一个比log4net易于使用的日志记录框架。

您必须在应用程序中插入适当的日志函数调用才能实际触发正在创建的日志条目。

由于您的问题标题指出您要写入与IIS相同的日志(文件);我不知道如何解决此要求(仅此而已,我无法想象您会这样做的原因)


0
投票

据我所知,Debug.WriteLine写入调试输出。您可以在调试器中看到它,然后从那里保存它。它不写日志文件。Debug Class

  1. 调试类成员是条件属性See this Answer for explanation

您可以尝试ELMAH

是应用程序范围的错误记录工具,它完全可插拔的。可以将其动态添加到正在运行的ASP.NET Web中应用程序,甚至计算机上的所有ASP.NET Web应用程序,无需重新编译或重新部署。

或者您可以尝试Log4Net

© www.soinside.com 2019 - 2024. All rights reserved.