这个问题不是关于Rollbar tho:)
不。Ilogger
是一个接口。它什么也做不了。相反,Ilogger
的实现应该记录未捕获的异常。听起来好像Rollbar已经在进行日志记录,所以您应该继续使用它来记录未捕获的异常,或者切换到其他库,如NLog、Serilog或log4net。
就我个人而言,我发现一些库在不同的情况下确实会遗漏消息,所以测试日志库很重要。仅仅相信信息是正确写的是不够的。您可以编写单元测试,以确保您的代码使用MOQ正确地记录异常。下面是本文中的一个示例。
_loggerMock.Verify
(
l => l.Log
(
//Check the severity level
LogLevel.Error,
//This may or may not be relevant to your scenario
It.IsAny<EventId>(),
//This is the magical Moq code that exposes internal log processing from the extension methods
It.Is<It.IsAnyType>((state, t) =>
//This confirms that the correct log message was sent to the logger. {OriginalFormat} should match the value passed to the logger
//Note: messages should be retrieved from a service that will probably store the strings in a resource file
CheckValue(state, LogTest.ErrorMessage, "{OriginalFormat}") &&
//This confirms that an argument with a key of "recordId" was sent with the correct value
//In Application Insights, this will turn up in Custom Dimensions
CheckValue(state, recordId, nameof(recordId))
),
//Confirm the exception type
It.IsAny<NotImplementedException>(),
//Accept any valid Func here. The Func is specified by the extension methods
(Func<It.IsAnyType, Exception, string>)It.IsAny<object>()),
//Make sure the message was logged the correct number of times
Times.Exactly(1)
);
但是,即使这样也不能保证Rollbar或其他记录器一定会将您的消息发送到日志位置。您只能通过观察记录器的输出来确认这一点。
我目前在我的路由中使用dotry/doCatch块,因此我无法使用全局onException块。 然而,如果驼峰路由中断(由于错误代码或意外/未测试的场景),我希望执行一些业务逻辑。希望这永远不会发生,但我仍然想处理更糟糕的情况。 我不能在全局OneException块中有java.lang.Exception,而且,我不想在每个路由上都添加一个额外的捕获。 在抛出未捕获的异常和中断路由之前,是否
问题内容: 我一直在阅读JLS,并且遇到了11.1.3节。我引用的异步异常是: 大多数异常是由于它们所发生的线程的操作而同步发生的,并且在程序中被指定为可能导致此类异常的某个点处发生。相反,异步异常是在程序执行的任何时候都可能发生的异常。 和 异步异常仅由于以下原因而发生: […] * Java虚拟机中的内部错误或资源限制,阻止其实现Java编程语言的语义。在这种情况下,引发的异步异常是Virtu
问题 怎样捕获代码中的所有异常? 解决方案 想要捕获所有的异常,可以直接捕获 Exception 即可: try: ... except Exception as e: ... log('Reason:', e) # Important! 这个将会捕获除了 SystemExit 、 KeyboardInterrupt 和 GeneratorExit 之外的所有异常。
问题内容: 任何Throwable都可以被捕获 输出: 因此,如果在初始化块期间做不好的事情,我希望能够捕获ExceptionInInitializerError。但是,以下操作无效: 输出: 并且如果我更改代码以另外捕获ArrayIndexOutOfBoundsException 被捕获的是ArrayIndexOutOfBoundsException: 谁能告诉我为什么呢? 问题答案: 顾名思义
问题内容: 在Linux下的python 2.6中,我可以使用以下命令来处理TERM信号: 除了仅一次设置一个信号,是否可以为该过程接收的所有信号设置处理程序? 问题答案: 您可以循环浏览信号模块中的信号并进行设置。
问题内容: 此问题与跨域资源共享(CORS)有关。 如果在发出CORS请求时出现错误,Chrome(以及AFAIK其他浏览器)会将错误记录到错误控制台。消息示例可能如下所示: XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我想知道是否有办法以编程方式获取此错误消息?我尝试将调用包装在try/catch中,也尝试添加事件处理程序。两者均未收到错误消息。 问题答案: 看到: