我正在创建一个面向公众的网站,其中一项要求是将所有错误/警告写入日志文件。
我到处都有 try catch 块,也可以在应用程序错误事件中捕获错误。
作为一个面向公众的网站,我担心日志文件可能会成倍增长(即使我每天都创建新文件)并且可能会降低网站性能。有什么办法可以异步写入错误文件,这样不会对用户产生任何影响吗?
任何样本或指南都非常适用。
我的网站采用 ASP.NET Web 表单和 c#。
谢谢
我正在创建一个面向公众的网站,其中一项要求是将所有错误/警告写入日志文件。
我到处都有 try catch 块,也可以在应用程序错误事件中捕获错误。
作为一个面向公众的网站,我担心日志文件可能会成倍增长(即使我每天都创建新文件)并且可能会降低网站性能。有什么办法可以异步写入错误文件,这样不会对用户产生任何影响吗?
任何样本或指南都非常适用。
我的网站采用 ASP.NET Web 表单和 c#。
谢谢
建议: Tippu 我强烈建议您改用 ELMAH。它设置起来尽可能简单,并且会让您的生活变得更加轻松(您将永远不会再编写自己的日志记录程序)。它甚至可以捕获未处理的异常!
查看以下网站,了解它是什么以及设置的容易程度
安全性:您必须注意的唯一一件事是您必须保护 ELMAH,否则您的会话可能会被劫持。但是,很容易保护它。请查看以下网站,了解安全问题以及如何保护它。
5-10 分钟的设置步骤
转到 Nuget,搜索“ELMAH SQL”并安装“ELMAH on MS SQL Server”。
在您的“App_Readme”文件夹中将有一个“Elmah.SQLServer.sql”文件,它安装了一个表和 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>
转到您的连接字符串并将“elmah-sqlserver”连接字符串指向您的特定数据库。
转到您的尝试捕获并在捕获部分添加“ErrorSignal.FromCurrentContext().Raise(ex);”
您的应用程序现在将捕获已处理和未处理的异常并将错误写入 SQL Server 表。要查看错误,请打开浏览器并转到“yourwebsite/elmah.axd”
您也可以对其进行设置,以便将错误发送给您。查看以下网站以了解如何执行此操作:设置 ELMAH 电子邮件
忽略上面的数字排序