我正在创建一个面向公众的网站,其中一个要求是将所有错误/警告写入日志文件。异步写入错误日志文件
我已经尝试了无处不在的catch块,并且还可以捕获应用程序错误事件中的错误。
作为一个面向公众的网站,我担心日志文件可能呈指数级增长(即使我每天创建新文件),并且可能会降低网站性能。有没有办法异步写入错误文件,所以不会对用户造成任何影响?
任何样本或指导都非常严格。
我的网站是在ASP.NET Web窗体和c#中。
感谢
我正在创建一个面向公众的网站,其中一个要求是将所有错误/警告写入日志文件。异步写入错误日志文件
我已经尝试了无处不在的catch块,并且还可以捕获应用程序错误事件中的错误。
作为一个面向公众的网站,我担心日志文件可能呈指数级增长(即使我每天创建新文件),并且可能会降低网站性能。有没有办法异步写入错误文件,所以不会对用户造成任何影响?
任何样本或指导都非常严格。
我的网站是在ASP.NET Web窗体和c#中。
感谢
建议:蒂珀我强烈建议你使用ELMAH来代替。尽可能简单地设置并使您的生活变得如此简单(您将永远不会再编写自己的日志程序)。它甚至捕获未处理的异常!它是
它是什么看看下面的网站,以及如何方便地设置
安全:你必须知道的唯一的事情是,你必须以其他方式稳固ELMAH您会话可以被劫持。但是,保护它非常容易。看看以下网站上的安全问题以及如何保护它。
5-10分钟设置步骤
进入的NuGet,搜索 “ELMAH SQL” 并安装 “ELMAH MS SQL Server上”。
在你的“App_Readme”文件夹中将会有一个“Elmah.SQLServer.sql”文件,它安装一个表格和3个存储过程。在你想要连接的数据库中运行它。 (你将不得不为现存服务器中的存储过程设置权限,以便它可以读取和写入)
转到您的web配置(您会注意到ELMAH已自动为您更新)。发现,如果你不想远程访问保持现状,我相信它会得到保护。
如果您想允许远程访问,以便您可以在任何需要将其设置为true的情况下查看错误日志网站。你然后必须保护它。下面的内容将确保它为管理员并拒绝所有其他用户。看看这个网站了解更多信息Secure 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”连接字符串指向特定的数据库。
转到您的try catch,并在catch部分添加“ErrorSignal.FromCurrentContext()。Raise(ex);”
您的应用程序现在会捕获处理和未处理的异常并将错误写入SQL Server表。要查看错误,请打开浏览器并转至“yourwebsite/elmah.axd”
您也可以进行设置,以便将错误发送给您。看看如何做到这一点的以下网址:Setup ELMAH Email
忽略上述数量订购
看到各种方法在这里:http://stackoverflow.com/questions/1181561/how-to-有效的日志 - 异步 – rro