. NET Стандарт 2.1: Методы регистрации, трассировки и профилирования - PullRequest
0 голосов
/ 02 мая 2020

Я занимаюсь разработкой Build Progressive Web (PWA) с использованием Blazor. Существует много асинхронных методов, и я хочу при необходимости отслеживать некоторые вызовы методов. До сих пор я придумал только собственное решение, которое использует IDisposable:

public interface ILogProvider
{
    ILogScope CreateScope(string name);
}

public class ConsoleLogProvider : ILogProvider
{
    public ILogScope CreateScope([CallerMemberName] string name = "scope")
    {
        return new LogToConsole(name);
    }
}

public class LogToConsole : ILogScope
{
    public string Name { get; private set; }
    public LogToConsole(string name)
    {
        Name = name;
        Console.WriteLine($"--> begin of { Name }");
    }

    public void Dispose()
    {   
        Console.WriteLine($"<--end of { Name }");
    }
}

Использование:

void MethodName()
{
    using (var scope = provider.CreateScope())
    {
        //Do something
    }
}

Вопрос: Существуют ли другие способы ведения журналов или создания областей журналирования без Код загрязнения с надписью «использовать…» везде? Есть ли какое-либо существующее решение, которое я могу использовать, не изобретая колесо?

...