1

我正在创建一个面向公众的网站,其中一项要求是将所有错误/警告写入日志文件。

我到处都有 try catch 块,也可以在应用程序错误事件中捕获错误。

作为一个面向公众的网站,我担心日志文件可能会成倍增长(即使我每天都创建新文件)并且可能会降低网站性能。有什么办法可以异步写入错误文件,这样不会对用户产生任何影响吗?

任何样本或指南都非常适用。

我的网站采用 ASP.NET Web 表单和 c#。

谢谢

4

1 回答 1

2

建议: Tippu 我强烈建议您改用 ELMAH。它设置起来尽可能简单,并且会让您的生活变得更加轻松(您将永远不会再编写自己的日志记录程序)。它甚至可以捕获未处理的异常!

查看以下网站,了解它是什么以及设置的容易程度

埃尔玛

安全性:您必须注意的唯一一件事是您必须保护 ELMAH,否则您的会话可能会被劫持。但是,很容易保护它。请查看以下网站,了解安全问题以及如何保护它。

ASP.NET 会话劫持


5-10 分钟的设置步骤

  1. 转到 Nuget,搜索“ELMAH SQL”并安装“ELMAH on MS SQL Server”。

  2. 在您的“App_Readme”文件夹中将有一个“Elmah.SQLServer.sql”文件,它安装了一个表和 3 个存储过程。在您想要连接的数据库中运行它。(您必须在实时服务器中设置存储过程的权限,以便它可以读取和写入它)

  3. 转到您的网络配置(您会注意到 ELMAH 已自动为您更新)。Find ,如果您不想进行远程访问,请保持原样,我相信它会受到保护。

如果您想允许远程访问,以便您可以在任何需要将其设置为 true 的地方查看错误日志网站。然后你必须保护它。下面将为管理员保护它并拒绝所有其他用户。查看此网站以获取更多信息安全 ELMAH

<location path="elmah.axd">  
    <system.web>
       <httpHandlers>
            <add verb="POST,GET,HEAD" 
                path="elmah.axd" 
                type="Elmah.ErrorLogPageFactory, Elmah" />
       </httpHandlers>
     <authorization>
        <allow roles="admin" />  
        <deny users="*" />
     </authorization>  
   </system.web>
   <system.webServer>
     <handlers>
         <add name="ELMAH" 
             verb="POST,GET,HEAD"
             path="elmah.axd" 
             type="Elmah.ErrorLogPageFactory, Elmah"
             preCondition="integratedMode" />
     </handlers>
   </system.webServer>

  1. 转到您的连接字符串并将“elmah-sqlserver”连接字符串指向您的特定数据库。

  2. 转到您的尝试捕获并在捕获部分添加“ErrorSignal.FromCurrentContext().Raise(ex);”

  3. 您的应用程序现在将捕获已处理和未处理的异常并将错误写入 SQL Server 表。要查看错误,请打开浏览器并转到“yourwebsite/elmah.axd”

  4. 您也可以对其进行设置,以便将错误发送给您。查看以下网站以了解如何执行此操作:设置 ELMAH 电子邮件

忽略上面的数字排序

于 2012-11-20T04:12:19.443 回答