11

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

4

4 回答 4

12

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

于 2013-08-21T00:44:48.590 回答
9

从 sysinternals捕获Debug.WriteDebug.WriteLine使用DebugView

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

当然你必须编译,Debug=true否则函数根本不会被调用。因此Debug.Write 是一种仅用于实时测试和调试应用程序的好方法,而不是一般记录错误的解决方案。对于您喜欢保存错误的情况,我认为您需要使用其他用户建议的一个库,或者直接在事件查看器上写下您的错误。

ps:由于某种原因,4.78 版无法在我的 windows xp 上运行,我切换回 4.77

于 2012-04-13T04:05:31.347 回答
4

我通常做的是使用3rd-party logging框架,通过配置文件配置框架(即无需重新编译)。

我使用的框架是:

  • log4net – 它有很多所谓的“附加程序”来写入不同的目标,如 Windows 事件日志或数据库或日志文件。
  • NLog – 一个比 log4net 更容易使用的日志框架。

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

由于您的问题标题表明您要写入与 IIS 相同的日志(文件);我不知道如何解决这个要求(独自一人我无法想象你会这样做的原因)

于 2012-04-13T04:11:19.153 回答
0

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

  1. 调试类成员是条件属性请参阅此答案以获取解释

你可以试试ELMAH

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

或者你可以试试Log4Net

于 2012-04-13T04:05:55.693 回答