首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.NET MVC5项目中实现Airbrake

在ASP.NET MVC5项目中实现Airbrake
EN

Stack Overflow用户
提问于 2021-05-07 20:25:50
回答 1查看 35关注 0票数 0

我有一个较旧的.NET 4.8项目,需要使用空气制动。该项目将Unity用于其IoC容器,实现了标准的Repository Service模式。

在ASP.NET示例中几乎没有什么例子。

我希望做这样的事情:

代码语言:javascript
复制
public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType(typeof(ILogger<>), typeof(ILogger<>));
    container.RegisterType<IMyService, MyService();
}

public class MyController
{
    private readonly ILogger<MyController> _logger;
    private readonly IMyService _myService;
    
    public MyController(ILogger<MyController> logger, IMyService _myService)
    {
        _logger = logger;
        _myService = myService;
    }

    public MyMethod()
    {
        try
        {
            var x = _myService.DoThis();
        } 
        catch (Exception ex)
        {
            _logger.LogError(e, e.Message);
        }
    }
}

我认为我需要以某种方式向ILogger注册Airbrake,或者创建我自己的日志记录服务。

代码语言:javascript
复制
public class Logging : ILogging
{
    public void LogError(Exception e, string message)
    {
        var airbrake = new AirbrakeNotifier(new AirbrakeConfig
        {
            ProjectId = // pulled from web.config somehow
            ProjectKey = // pulled from web.config somehow
        });

        var notice = airbrake.BuildNotice(ex);
        airbrake.NotifyAsync(notice).Result;
    }
}

我试着以此为起点:https://github.com/airbrake/sharpbrake/blob/master/docs/asp-net-http-module.md

这很棒,但我需要以某种方式扩展它,以便能够在我的服务中使用它,而不仅仅是.Web项目。

我知道有ASP.NET模块可以自动捕获错误,但我希望在我认为合适的时候手动记录,并避免每次想要记录错误时都调用airbrake客户端。

有没有办法做到这一点,或者我完全误解了这应该是如何工作的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 16:45:51

实际上,您不需要将其作为.NET ILogger的一部分进行连接。我确信有一种方法(可能是通过OWIN),但是您可以像编写其他任何服务一样编写一个基本的日志记录服务,并通过bog标准DI使用它。答案从一开始就在问题中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67434935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档