gpt4 book ai didi

elmah - 你如何集中 ELMAH 日志

转载 作者:行者123 更新时间:2023-12-04 05:04:48 27 4
gpt4 key购买 nike

在我的作品中,我们制作的网站好像已经过时了(即每年有很多网站)

我想在所有这些上安装 ELMAH 作为公司实践,然后集中记录所有内容以供我们的开发人员查看。这个过程必须非常简单,否则它的使用不会起飞。

我正在考虑建立一个中央 Google 阅读器帐户,并将 ELMAH 安装的所有 RSS 提要连接到其中。

我担心的是,Google 表示他们大约每小时只检查一次,这意味着如果您使用 ELMAH 的“内存中”存储,那么在应用程序池重新启动时可能会遗漏错误。

电子邮件非常好,但如果每个人都开始收到 ELMAH 错误消息,他们就会开始忽略它们——也许我可以为此设置一个额外的交换邮箱以保持独立?

您的想法将不胜感激

(ps 这可能被认为是主观的 - 但我相信有人可能在许多主观答案中找到了答案,使其成为一个有效的问题)

最佳答案

通过对 Elmah 源代码进行一些更改,您可以将所有站点写入同一个数据库。然后,您可以配置一个主站点,该站点显示抛出异常的应用程序的所有异常。

Eric King 在这篇博文中展示了如何做 http://blog.devadept.com/2010/02/using-elmah-with-multiple-applications.html

总结一下:

在数据库中创建两个名为 ELMAH_GetErrorsXML_Master 和 ELMAH_GetErrorXML_Master 的附加存储过程,不带 applicationname 参数。

然后基于现有的“SQLErrorLog.cs”类创建一个 SQLMasterErrorLog 类。在此编辑 GetErrorXml() 和 GetErrorsXML() 方法以调用新的存储过程

public static SqlCommand GetErrorXml(string appName, Guid id)
{
SqlCommand command = new SqlCommand("ELMAH_GetErrorXml_Master");
command.CommandType = CommandType.StoredProcedure;

SqlParameterCollection parameters = command.Parameters;
parameters.Add("@ErrorId", SqlDbType.UniqueIdentifier).Value = id;

return command;
}

public static SqlCommand GetErrorsXml(string appName, int pageIndex, int pageSize)
{
SqlCommand command = new SqlCommand("ELMAH_GetErrorsXml_Master");
command.CommandType = CommandType.StoredProcedure;

SqlParameterCollection parameters = command.Parameters;

parameters.Add("@PageIndex", SqlDbType.Int).Value = pageIndex;
parameters.Add("@PageSize", SqlDbType.Int).Value = pageSize;
parameters.Add("@TotalCount", SqlDbType.Int).Direction = ParameterDirection.Output;

return command;
}

更改 ErrorLogPage 类中的 RendorErrors() 方法以在日志查看器表中为应用程序名称显示一个额外的列。

将以下内容添加到表头
headRow.Cells.Add(FormatCell(new TableHeaderCell(), "Host", "host-col"));
headRow.Cells.Add(FormatCell(new TableHeaderCell(), "App", "app-col"));

以及在创建子行的 for 循环中的以下内容
bodyRow.Cells.Add(FormatCell(new TableCell(), error.HostName, "host-col"));
bodyRow.Cells.Add(FormatCell(new TableCell(), error.ApplicationName, "app-col"));

现在您只需要一个配置了 elmah 的空网站。而不是正常的 SqlErrorLog 使用以下
<errorLog type="Elmah.SqlMasterErrorLog, Elmah" connectionStringName="elmah"/>

关于elmah - 你如何集中 ELMAH 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5161892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com