Saya memiliki proyek .NET 4.8 lama yang perlu menggunakan Airbrake. Proyek ini menggunakan Unity untuk wadah IoC-nya, menerapkan pola Repository Service standar.

Ada sangat sedikit contoh ASP.NET.

Saya mencari untuk melakukan sesuatu seperti ini:

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);
        }
    }
}

Saya yakin saya perlu entah bagaimana mendaftarkan Airbrake dengan ILogger atau mungkin membuat layanan logging saya sendiri.

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;
    }
}

Saya telah mencoba menggunakan ini sebagai titik awal: https ://github.com/airbrake/sharpbrake/blob/master/docs/asp-net-http-module.md

Ini luar biasa, tetapi saya perlu memperluasnya agar dapat menggunakannya dalam layanan saya dan bukan hanya proyek .Web.

Saya tahu ada modul ASP.NET yang secara otomatis akan menangkap kesalahan tetapi saya ingin masuk secara manual ketika saya mau, dan menghindari harus memanggil klien airbrake setiap kali saya ingin mencatat kesalahan.

Apakah ada cara untuk melakukan ini atau saya benar-benar salah paham bagaimana ini seharusnya bekerja?

0
supermanpineaplle 7 Mei 2021, 15:25

1 menjawab

Jawaban Terbaik

Anda sebenarnya tidak perlu menghubungkannya sebagai bagian dari .NET ILogger. Saya yakin ada cara (mungkin melalui OWIN) tetapi Anda tidak menghentikan Anda untuk menulis layanan logging dasar seperti yang Anda lakukan pada layanan lain dan menggunakannya melalui DI standar bog. Jawabannya cukup banyak dalam pertanyaan untuk memulai.

0
supermanpineaplle 11 Mei 2021, 08:45