首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Elmah以编程方式记录错误:记录特定信息

使用Elmah以编程方式记录错误:记录特定信息

Elmah是一个开源的错误日志模块,可以帮助开发人员在ASP.NET应用程序中记录错误和异常。Elmah可以帮助开发人员轻松地记录错误信息,并提供了一个友好的Web界面来查看这些错误信息。

使用Elmah以编程方式记录错误的方法如下:

  1. 安装Elmah NuGet包

在Visual Studio中,右键单击项目名称,选择“管理NuGet程序包”,然后搜索“Elmah”并安装。

  1. 配置Elmah

在Web.config文件中添加以下配置:

代码语言:<configuration>
复制
 <configSections>
   <sectionGroup name="elmah">
     <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
     <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
     <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
     <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>
  <elmah>
   <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/Elmah" />
   <security allowRemoteAccess="yes" />
  </elmah>
 <system.web>
    <httpModules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
    </httpModules>
  </system.web>
 <system.webServer>
   <modules>
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
  </system.webServer>
</configuration>
  1. 记录特定信息

在代码中,可以使用Elmah的ErrorSignal类来记录特定信息。例如:

代码语言:txt
复制
try
{
    // 执行可能会引发异常的代码
}
catch (Exception ex)
{
    // 记录异常信息
    ErrorSignal.FromCurrentContext().Raise(ex);
}

Elmah会自动记录异常的详细信息,包括错误类型、错误消息、堆栈跟踪等。如果需要记录更多的信息,可以使用Elmah的Error类来创建自定义错误对象,并将其传递给ErrorSignal的Raise方法。

例如,可以使用以下代码记录更多的信息:

代码语言:txt
复制
try
{
    // 执行可能会引发异常的代码
}
catch (Exception ex)
{
    // 创建自定义错误对象
    var error = new Error(ex);
    error.SetUser("当前用户ID", "当前用户名");
    error.SetCustomProperty("CustomProperty1", "自定义属性1的值");
    error.SetCustomProperty("CustomProperty2", "自定义属性2的值");

    // 记录错误信息
    ErrorSignal.FromCurrentContext().Raise(error);
}

这样,Elmah将会记录错误信息,包括异常的详细信息、当前用户的ID和用户名以及自定义属性的值。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云云巢(Tencent Cloud Container Service):

https://cloud.tencent.com/product/tke

腾讯云Serverless(Tencent Cloud Serverless):

https://cloud.tencent.com/product/scf

腾讯云API网关(Tencent Cloud API Gateway):

https://cloud.tencent.com/product/apigateway

腾讯云对象存储(Tencent Cloud Object Storage):

https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实战记录—PHP使用curl出错时输出错误信息

踩过的坑,实在不想再踩了,记录记录。...} curl_close($ch);//关闭curl 同理,像正则,Json,数据库这些出错时基本都会有提供有帮助的错误信息 CURL状态码列表 状态码 状态原因 解释 0 正常访问 1 错误的协议...9 访问资源错误 FTP 访问被拒绝。服务器拒绝登入或无法获取您想要的特定资源或目录。最有可 能的是您试图进入一个在此服务器上不存在的目录。 11 FTP密码错误 FTP 非正常的PASS 回复。...无法改变传输方式到二进制。 18 文件传输短或大于预期 部分文件。只有部分文件被传输。 19 RETR命令传输完成 FTP 不能下载/访问给定的文件, RETR (或类似)命令失败。...43 内部错误 内部错误。由一个不正确参数调用了功能。 45 接口错误 接口错误。指定的外发接口无法使用。 47 过多的重定向 过多的重定向。

6K50

使用 NuGet 管理项目库

请随便走进一间中型或大型工作室,问问他们有多少日志记录库。...访问多家公司后,您将发现他们拥有比例非常高的内部日志记录库,而这些库中有一些非常不错,例如,Log4Net、NLog 和 Error Logging Modules and Handlers(即 ELMAH...ELMAH 就是一个非常有用的库,是由开发人员自己编写的。 ELMAH 能够在出现异常时记录 Web 应用程序中所有未经处理的异常以及所有请求信息,例如,标头、服务器变量等。...假设您刚刚听说 ELMAH 并希望在下一个项目中使用它。 您可能会采取下列步骤: 查找 ELMAH。由于它名称独特,Bing 搜索的第一条搜索结果将是 ELMAH Google 代码页。...将程序包的内容解压缩到解决方案中的特定位置。大多数开发人员会避免将程序集解压缩到 bin 目录,这是因为该目录用于生成输出而非输入,并且不在版本控制的跟踪范围之内。

1.6K100
  • 使用Glimpse 监测ASP.NET MVC网站

    在开发ASP.NET WebFrom时,如果想要追踪每个页面的执行状况与效能的话,其实是可以使用“Trace”功能,如此一来就可以在每个页面的下方显示页面执行时的完整详细信息,包括前端传送的Http Request...、所有的Session、Cookie等,对于开发时期来说,这些信息可以帮助我们在除错时候可以掌握确切的信息,然而系统上线之后,Trace功能势必要关闭,而单靠ELMAH记录错误讯息也无法完全掌握,因为有的时候执行正常并不表示功能正常...,例如运行时间过慢、路径错误等, 接下来就来介绍“Glimpse”,除了具有Trace的功能外,也可以结合Forms Authentication的登入认证,让我们在系统上线之后,一样可以实时让开发人员追踪页面执行的各项信息...与ELMAH所遇到的问题是一样的,那就是预设安装后,都是可以匿名浏览,对于网站的安全性来说是个相当大的威胁,尤其是Glimpse的Config,会把Web.Config的所有信息都完整呈现,所以这一篇文章就要来说明如何让...其实glimpse可以结合ELMAH,让ELMAH记录到的错误讯息于glimpse中显示,在系统的登入认证后,只要启用glimpse就可以去看ELMAH的纪录数据,不必再另外进入ELMAH, 接下来介绍如何透过

    4.6K90

    asp.net mvc 的异常处理解决方案

    应用程序发生异常时,给用户一个友好的处理方式,同时将异常记录下来并通知系统管理员或是运维人员是应用的开发的常用场景。...asp.net mvc 在创建项目的时候在Views的Shared目录下有一个错误处理页Error.aspx视图,这个默认的错误处理功能没有实现对错误日志的记录。...捕获所有的服务端异常包括HttpExeptions例如404错误,并且自定义错误处理的视图,同时将错误记录到数据库,发送给相关人员,综合下面两篇blog: Real world error hadnling...blogs.microsoft.co.il/blogs/shay/archive/2009/03/06/real-world-error-hadnling-in-asp-net-mvc-rc2.aspx ELMAH...with ASP.NET MVC: http://darrell.mozingo.net/2009/02/19/elmah-with-aspnet-mvc/ 将这两文章的内容整合,就可以得到asp.net

    88590

    检测常见ASP.NET配置安全漏洞

    使用者只要提供Internet上公开ASP.NET网站的URL,ASafaWeb会发出几个Request,藉此检查网站是否存在一些常见的安全漏洞。 ?...由今年1至3月扫描过的网站记录,排除掉ASafaWeb测试网站及非ASP.NET网站后共有7,184份检测结果,Hunt做出简单的统计。...以下是Hunt列出的常见ASP.NET配置安全漏洞: 未隐藏错误讯息 开发人员常会将方便排错,但正式上线时却忘了移除,导致一旦程序出错,相关程序代码细节甚至程序片段就赤裸裸地展示出来...黑客可能由其中找到相关的文件位置、数据库信息、组件版本... 等信息,提供入侵的指引。...ELMAH存取未设限 关于ELMAH存取设定的风险之前也有文章 《大叔手记(18):利用Elmah和Google体验一把入侵的快感》提过,稍有不慎,程序里的秘密就会大放送,十分危险,甚至黑客还可能藉此伪造

    3.4K60

    Java 编程中关于异常处理的 10 个最佳实践

    1)为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。 选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。...检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。...只要你不过度使用检查型异常,你可以最大限度的减少这类情况,这样做的结果是你会得到更清洁的代码。你同样可以使用Java7的新功能,移除重复项。...空的catch块只能变得无意义,如果你非常肯定异常不会继续任何方式影响对象状态,但在程序执行期间,用日志记录错误依然是最好的(方法)。...任何方法抛出的异常都有相应的文档记录,这样你就能下意识的提醒任何使用(该方法)的人。 这些就是所有在Java编程中在处理异常的时候需要遵循的最佳实践。

    48640

    异常实践 | 优雅,永不过时

    避免忽略异常的方式包括在 catch 块中至少记录异常信息,采取适当的处理措施,或者向上层抛出异常以通知调用者。...这是一个简单的方式,但在生产环境中可能不够安全,因为它会将堆栈信息打印到标准错误流。...,你可能希望使用自定义的方式记录异常信息,例如将异常信息写入文件、发送邮件或将其存储到数据库。...try { // 可能抛出异常} catch (Exception e) { // 使用自定义方式记录异常信息 logToCustomStorage(e);}private void...选择适当的记录方式取决于项目的需求和约定。自定义异常:自定义异常是一种在特定情况下创建并抛出的异常,它允许开发人员定义自己的异常类型更好地适应应用程序的需求,以便更好地传达异常的含义和上下文。

    44262

    基于.NET平台常用的框架整理

    Enterprise Library Log Application Black:微软企业库日志记录Elmah:实现最流行的ASP.NET应用异常日志记录框架。...NLog:是一个简单灵活的日志记录类库,性能比Log4Net高,使用和维护难度低。 关于NoSQL数据库: Mongodb:分布式文件存储数据库。 Membase:家族的一个新的重量级的成员。...分词、全文检索和搜索引擎 Lucene.net:流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。...主要设计目标如下: 时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。 高吞吐率。...类似于ZeroMQ,它能够代理人和点对点的技术实现队列。同时类似于RabbitMQ,它少量代码就可以高效地实现高级应用场景。

    1.8K30

    编程的WAF(下)

    一、编程语言的要素 天存信息的iWall3应用防火墙是一种创新式的类编程 WAF,它包含了编程语言的一些基本要素。 1....表达式 iWall3 支持与通用编程语言一致的表达式:表达式由常量、变量、运算符和内置函数组成,模板字符串方式内嵌书写,可在条件判断、变量赋值、模式匹配、日志输出等任意位置使用。 [图2] 4....二、数据方式的语言表达 天存信息的 iWall3 包含了编程语言的设计思想,但独创性地数据方式呈现。 1. JSON格式 安全产品的使用者通常是非程序员,他们习惯于面对配置文件而非一段代码。...iWall3 规则具有明确细致的语法定义,从而能够使用成熟的 JSON schema 方式来校验 (validate) 规则的正确性,例如可以细致检查动作的必选参数、可选参数以及拼写错误。 2....四、有什么用 使用编程 WAF,安全人员不再是规则的使用者,而变成了规则的生产者。针对应用的细致和独立的安全需求,基本上都可以用编程方式实现出来,不再受限于 WAF 产品提供的内置功能。

    88310

    编程的WAF(上)

    作为防护对象的 WEB 应用,其功能和运行环境往往是复杂且千差万别的,这导致即便防御某个特定的攻击方式时,用户需求也可能是细致而多样的。 最基本的 SQL 注入 (以下简称注入) 为例。...注入攻击当然是要防范的,但用户可能还有以下需求: 某个域名或某些特定的 URL 不需要注入检查 对来自外网的注入访问进行拦截,来自内网的注入访问只记录不拦截 对特定的请求参数名或特定特征的请求参数不进行注入检查...三、大家一起来编程? 既然应用是编程的,那么应用防火墙的配置可否也用编程方式来实现?...更重要的是,这仅是代码片段 (其实就是函数),真的要整合起来使用,还面临很多编程方面的问题,如: 除错和容错: 各种语法错误和链接错误,比如使用了不存在的变量或方法。...四、类编程的WAF 天存信息的类编程 WAF,用数据结构来表达程序思想,让普通的技术支持人员也能够写出足够复杂和灵活的安全策略。

    73030

    用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识 (2) + 准备项目

    同样也可以在一个类里面把记录的日志分为不同的分类,这时候你可以使用ILoggerFactory,这样就可以随时创建logger了,并把它绑定到特定的区域: ? ?...Warning = 3, 通常用于记录非正常或意外的事件, 也可以包括不会导致应用程序停止的错误和其他事件, 例如验证错误等....Error = 4, 用于记录无法处理的错误和异常, 这些信息意味着当前的活动或操作发生了错误, 但不是应用程序级别的错误....记录的日志信息是可以带参数的, 使用消息模板(也就是消息主题和参数分开), 格式如下: ? 同样也支持字符串插值: ? 第二种方式代码的可读性更强一些, 而且它们输出的结果没有什么区别: ?...可以看到日志信息的第一行内容是一样的, 第二行是各自的日志信息. 日志的过滤 我们可以为整个程序设定日志记录的最低级别, 也可以为某个日志提供商和分类指定特定的过滤器.

    1.1K00

    项目配置

    运行项目后,可以看到我记录的日志: 同样也可以在一个类里面把记录的日志分为不同的分类,这时候你可以使用ILoggerFactory,这样就可以随时创建logger了,并把它绑定到特定的区域: 不知道您有没有发现上面这几个例子中日志输出的时候都有个数字...Warning = 3, 通常用于记录非正常或意外的事件, 也可以包括不会导致应用程序停止的错误和其他事件, 例如验证错误等....Error = 4, 用于记录无法处理的错误和异常, 这些信息意味着当前的活动或操作发生了错误, 但不是应用程序级别的错误....记录的日志信息是可以带参数的, 使用消息模板(也就是消息主题和参数分开), 格式如下: 同样也支持字符串插值: 第二种方式代码的可读性更强一些, 而且它们输出的结果没有什么区别: 但是对于日志系统来说...可以看到日志信息的第一行内容是一样的, 第二行是各自的日志信息. 日志的过滤 我们可以为整个程序设定日志记录的最低级别, 也可以为某个日志提供商和分类指定特定的过滤器.

    83220

    C#的自定义异常

    在C#编程中,异常处理是确保程序健壁性和稳定性的关键。除了使用内建的异常类型,开发者经常需要创建自定义异常来更精确地描述和处理特定错误情况。...1.2 为什么需要自定义异常自定义异常提供了一种方式来清晰地表达程序中的错误条件,它们可以包含更具体的错误信息,并且可以被设计为包含额外的数据,帮助调试和错误恢复。2....,提供关于错误的更多上下文。...自定义异常的最佳实践4.1 清晰的错误信息自定义异常的消息应该是清晰的,能够准确地描述错误情况。4.2 包含足够的细节提供足够的细节,如错误代码、错误发生的位置等,可以帮助调用者更好地理解和处理异常。...4.5 记录异常在捕获异常时,应该记录异常的详细信息,这对于调试和监控应用程序非常有用。

    81700

    一个异常,还有这么多说法么?

    异常的分类 Java中的异常处理机制是Java编程语言中一个非常重要的组成部分,它提供了一种结构化且灵活的方式来处理程序在运行时可能出现的错误。...根据具体的业务需求,在catch块中可以进行一些处理操作,比如打印异常信息记录日志、返回默认值等。 自定义异常 除了Java提供的异常类之外,程序员还可以自定义异常类来表示特定的异常情况。...异常处理机制允许程序在出现数据库错误时,执行回滚操作、释放数据库资源或通知用户。 网络编程:在网络通信中,可能会遇到连接失败、数据格式错误等问题,这些都可以通过异常处理机制来捕获和处理。 2....提高程序稳定性和可靠性 避免程序崩溃:通过捕获并处理异常,可以防止程序在遇到错误时崩溃,使程序能够更稳定的方式运行。...错误报告和日志记录:异常处理机制允许程序在捕获异常时记录错误信息和堆栈跟踪,这对于后续的调试和维护至关重要。

    10310

    【C# 基础精讲】异常的类型和处理方法

    在C#及其他编程语言中,异常处理是一种重要的机制,用于捕获和处理程序运行时可能出现的错误保证程序的健壮性和稳定性。本文将详细介绍C#中的异常类型、异常处理机制以及最佳实践。 1....3.2 使用特定的异常类型 尽可能使用特定的异常类型来捕获和处理异常,这样可以更精确地处理不同类型的错误情况。...3.5 记录异常信息 捕获到的异常应该至少记录错误信息,以便于调试和故障排除。可以使用日志记录库或输出到控制台。...3.6 自定义异常类 对于特定的业务逻辑或应用,可以创建自定义异常类来提供更有意义的异常信息,方便调试和处理。 3.7 嵌套异常处理 在一些情况下,可以在内部处理异常,然后在外部捕获并记录异常信息。...总结 异常处理是编程中的重要部分,用于捕获和处理程序运行时可能发生的错误情况,确保程序的稳定性和健壮性。在C#中,您可以使用try-catch块、finally块和throw关键字来实现异常处理。

    49920

    专业上的常用的工具和类库集

    IISExpress:用于在没安装IIS的机器上,IIS相同的方式运行Web应用程序。为开发者调试Web应用程序提供方便快捷安全的手段。...国内还有人做了个中文汉化版本 Database .NET:创新/强大/直觉式的多重数据库管理工具,一致性与更简单的方式来显示与管理不同的数据库系统,绝大部分功能是免费的,但是收费版体验更好。...官方网站: http://automapper.org Elmah 实现最流行的ASP.NET应用异常日志记录框架,可以详细的将运行时的各种异常记录在文件、数据库或其他可能的任何位置。...官方项目: http://elmah.googlecode.com Lucene.Net 流行高性能的全文索引库,可用于为各类信息提供强大的搜索功能。迁移自Java的Lucene库。...通过使用NLog,我们可以在任何一种.NET语言中输出带有上下文的(contextual information)调试诊断信息,根据喜好配置其表现样式之后发送到一个或多个输出目标(target)中。

    2.7K90
    领券