.NET Standard 2.1: методы ведения журнала, трассировки и профилирования
Я разрабатываю 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
}
}
Вопрос: Есть ли какие-либо другие способы ведения журнала или создания областей ведения журнала без кода загрязнения с указанием везде "using…"? Есть ли какое-нибудь существующее решение, которое я могу использовать, не изобретая заново колесо?