1

我有一个 .net 3.5 网站,当我在 Visual Studio 中运行它时运行良好。但是,当我们在 IIS 中运行它时,会出现一些错误。我想做的是向 web.config 添加某种类型的日志记录,以便将网站发生的事情记录到文件中。有什么好的方法吗?谢谢

4

4 回答 4

2

如果您的代码使用内置的 .NET System.Diagnostics.Trace 函数输出日志信息,您可以使用 web.config 文件控制和配置这些跟踪的去向。

在您的代码中,使用如下调用

System.Diagnostics.Trace.TraceInformation("Your log info here");

在您的 web.config 中,设置一个事件日志跟踪侦听器,如下所示:

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener" 
          type="System.Diagnostics.TextWriterTraceListener" 
          initializeData="TextWriterOutput.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

这会将跟踪输出从您的程序路由到文本文件 TextWriterOutput.log

更多信息:http: //msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx

于 2012-06-12T16:02:17.397 回答
0

我不明白“发生在文件中”是什么意思,但我添加日志的首选方法是使用NLog

NLog 可通过NuGet获得,功能强大且非常易于设置。对于不同类型的错误,您可以有不同的日志操作。例如,对于我的许多使用 NLog 的 Web 应用程序,我将大部分内容记录到文件中,但也有致命错误向操作团队发送电子邮件。

如果这不是您要查找的内容,请更新您的问题以更清楚地了解您要解决的问题。

于 2012-06-12T14:58:37.913 回答
0

最强大的(在我看来)日志框架之一是ELMAH。它可以自动记录错误,您还可以实现自己的触发器以在日志中存储信息。

最重要的是,您可以在不更改代码库的情况下实现它。只需要更改 web.config 或 machine.config。

于 2012-06-12T14:58:42.770 回答
0

您真的应该使用像 NLog 这样的良好日志框架(如其他地方所建议的那样)。但是,如果您只需要快速而肮脏的东西,请考虑向 Global.asax Application_Error 事件添加一些简单的错误处理,如下所示(从内存中释放):

protected void Application_Error(object sender, EventArgs e)
{
    // Get error and log objects
    var exception = Server.GetLastError();
    var log = new System.IO.StreamWriter("c:\\path\\to\\log.txt");

    // Write out what you need and close the file
    log.WriteLine(exception.Message);
    log.Close();

    // Redirect to error page ..
}

请记住确保您也具有打开/创建日志文件的必要权限。

于 2012-06-12T16:11:50.560 回答