如何读取我自己的ASP.NET项目及其依赖项的日志



我创建了一个ASP.NET 6 Blazor Server端项目。我向WeatherForecastService类注入了一个记录器。我创建了一个库项目,并从ASP.NET项目中引用了它。我在ASP.NET项目的那个库中创建了一个对象,并传递了一个记录器。

如果我在VisualStudio中以调试模式启动它,那么来自两个项目的日志消息都会打印在"输出"面板中。这很好,但我想做的是,除此之外(即,不禁用VS的"输出"面板中的日志输出(,显示我的ASP.NET项目中的日志。例如;日志";页

可能没有简单的方法可以实时向客户端浏览器发送日志消息,所以我将每秒轮询服务器以获取新的日志消息。要做到这一点,我认为每当ASP.NET项目中出现日志消息时,我都必须得到通知。不仅仅是ASP.NET项目本身的日志,还有引用项目的日志,就像VS的"输出"面板一样。我能做到吗?

ASP.NET 6,Blazor服务器端项目

namespace BlazorApp1.Data
{
public class WeatherForecastService
{
private readonly ILogger _logger;
public WeatherForecastService(ILogger<WeatherForecastService> logger, IServiceProvider sp)
{
_logger = logger;
var d = new Dog(sp.GetRequiredService<ILogger<Dog>>());
logger.LogInformation("WeatherForecastService created.");
}
}

引用的";图书馆";项目

using Microsoft.Extensions.Logging;
namespace ClassLibrary1
{
public class Dog
{
public Dog(ILogger<Dog> logger)
{
logger.LogInformation("Dog created.");
}
}
}

根据您的日志记录位置,您将对文件或数据库进行以太池处理。对于引用的项目和其中的日志,您需要实现记录器,并将数据实际记录到同一个文件中。或者不同的,但在服务中,您需要从所有文件中获取所有数据。据我所知,记录到控制台的默认记录器就是为了这个。您需要以太实现自己的日志库,也可以导入serilog或log4net。而不是像使用实现一样使用默认的ILogger,而是将数据记录到以太文件或数据库中。用于实现日志记录提供程序的Microsoft链接https://learn.microsoft.com/en-us/dotnet/core/extensions/custom-logging-provider

最新更新