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

时间:2012-04-13 03:55:25

标签: asp.net iis logging iis-7 remote-debugging

我想让我的ASP.NET应用程序将行写入某个日志。 IIS是否提供了记录ASP.NET日志消息的任何内置方法?我想可能有办法捕获对System.Diagnostics.Debug.WriteLine()的调用,但我找不到任何办法。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

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

答案 2 :(得分:1)

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

我使用的框架是:

  • log4net - 有很多所谓的“appenders”可以写入不同的目标,如Windows事件日志或数据库或日志文件。
  • NLlog - 一个比log4net更容易使用的日志框架。

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

由于您的问题标题表明您要写入与IIS相同的日志(文件);我不知道如何解决这个要求(单凭我无法想象为什么你会这样做)

答案 3 :(得分:0)

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

  1. Debug Class成员是Conditional Attritubte See this Answer for explanation
  2. 您可以尝试ELMAH

      

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

    或者您可以尝试Log4Net