Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Azure上为Blazor服务器端应用程序添加跟踪/日志消息?(首选应用程序服务日志)_Azure_Azure Web App Service_Blazor_Blazor Server Side_Azure Appservice - Fatal编程技术网

如何在Azure上为Blazor服务器端应用程序添加跟踪/日志消息?(首选应用程序服务日志)

如何在Azure上为Blazor服务器端应用程序添加跟踪/日志消息?(首选应用程序服务日志),azure,azure-web-app-service,blazor,blazor-server-side,azure-appservice,Azure,Azure Web App Service,Blazor,Blazor Server Side,Azure Appservice,我有一个在Azure上运行的Blazor服务器端应用程序。我想添加跟踪/日志消息(_logger.LogInformation())。我更喜欢使用Azue应用程序服务日志。但是,我对其他选择持开放态度 我能够使用在Azure上运行的.Net内核编写的API获取跟踪/日志消息。这些日志将写入Azure应用程序服务日志。它们的类型是应用程序 对于我的Blazor应用程序,我按照与API相同的步骤设置跟踪/日志记录。但是,当我在Cloud Explorer中检查日志文件时,不会创建LogFiles文件

我有一个在Azure上运行的Blazor服务器端应用程序。我想添加跟踪/日志消息(_logger.LogInformation())。我更喜欢使用Azue应用程序服务日志。但是,我对其他选择持开放态度

我能够使用在Azure上运行的.Net内核编写的API获取跟踪/日志消息。这些日志将写入Azure应用程序服务日志。它们的类型是应用程序

对于我的Blazor应用程序,我按照与API相同的步骤设置跟踪/日志记录。但是,当我在Cloud Explorer中检查日志文件时,不会创建LogFiles文件夹下的任何应用程序文件夹

我确保打开Azure应用程序服务日志并设置了正确的级别。见下文

My Program.cs使用默认设置。我读到的应该会自动设置日志记录。(它来自我的API)请参见下文

下面是我添加用于跟踪/记录的代码示例

public class VpbDelegateAdminService : IVpbDelegateAdminService
{
    private readonly HttpClient _httpClient;
    private readonly IJsonSerializerWrapper _jsonSerializerWrapper;
    private readonly TokenProvider _tokenProvider;
    private readonly ILogger<VpbDelegateAdminService> _logger;

    public VpbDelegateAdminService(HttpClient httpClient, IJsonSerializerWrapper jsonSerializerWrapper, TokenProvider tokenProvider, ILogger<VpbDelegateAdminService> logger)
    {
        _httpClient = httpClient;
        _jsonSerializerWrapper = jsonSerializerWrapper;
        _tokenProvider = tokenProvider;
        _logger = logger;
    }
    
    public async Task<VpbDelegateListVm> GetVpbDelegatesAsync(int pageNo, string searchText)
    {
        _logger.LogInformation($"Argument(s)- pageNo: {pageNo}, searchText: {searchText ?? "null"}");
公共类VpbDelegateAdminService:IVpbDelegateAdminService
{
私有只读HttpClientu HttpClient;
专用只读ijsonSerializerRapper(JsonSerializerRapper);
专用只读令牌提供商_令牌提供商;
专用只读ILogger\u记录器;
公共VpbDelegateAdminService(HttpClient HttpClient、IJSONSerializerRapper JSONSerializerRapper、令牌提供程序令牌提供程序、ILogger记录器)
{
_httpClient=httpClient;
_JSONSerializerRapper=JSONSerializerRapper;
_令牌提供者=令牌提供者;
_记录器=记录器;
}
公共异步任务GetVPBDelegateSync(int pageNo,string searchText)
{
_logger.LogInformation($”参数-pageNo:{pageNo},searchText:{searchText???“null”});
正如我上面提到的,我更喜欢使用Azure应用程序服务日志。但是,如果Blazor无法做到这一点,或者如果有人成功地使用了Blazor的其他选项,我很想听听他们的想法


感谢您的帮助。

我建议您使用Application Insights,对于基于.NET的应用程序,它为您提供了完成APM的极好方法。如果您想与ILogger一起使用,请看一看。如果您想在没有ILogger的情况下开始使用,请看一看。

我自己解决了这个问题

通过以下步骤,我可以使用应用程序服务日志对Blazor服务器端应用程序进行日志记录/跟踪:相关步骤:AzureAppServices

步骤:(注意:这些步骤仅适用于文件系统/文件流。我没有设置blob):

1.使用更新appsetting:

    "AzureAppServicesFile": {
  "IncludeScopes": true,
  "LogLevel": {
    "Default": "Warning"
  }
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
                .ConfigureServices(serviceCollection => serviceCollection
                    .Configure<AzureFileLoggerOptions>(options =>
                    {
                        options.FileName = "diagnostics-";
                        options.FileSizeLimit = 50 * 1024;
                        options.RetainedFileCountLimit = 5;
                    }))
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
2.为Microsoft.Extensions.Logging.AzureAppServices安装nuget软件包

3.使用以下代码更新Program.cs:

    "AzureAppServicesFile": {
  "IncludeScopes": true,
  "LogLevel": {
    "Default": "Warning"
  }
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
                .ConfigureServices(serviceCollection => serviceCollection
                    .Configure<AzureFileLoggerOptions>(options =>
                    {
                        options.FileName = "diagnostics-";
                        options.FileSizeLimit = 50 * 1024;
                        options.RetainedFileCountLimit = 5;
                    }))
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging=>logging.AddAzureWebAppDiagnostics())
.ConfigureServices(serviceCollection=>serviceCollection
.Configure(选项=>
{
options.FileName=“诊断-”;
options.FileSizeLimit=50*1024;
options.RetainedFileCountLimit=5;
}))
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
});
4.打开应用程序日志记录的应用程序服务日志(文件系统)

5.将级别设置为信息

我的日志/跟踪(见下文)开始显示在云资源管理器中

_
logger.LogInformation($”参数-pageNo:{pageNo},searchText:{searchText???“null”});


我希望这些步骤对其他人有所帮助。

谢谢,但我不想使用应用程序洞察。至少现在还没有。我想我没有理由这么做,因为日志记录对我的API来说很好。我也刚刚能够让它起作用。我将在稍后发布一个答案。我理解只使用日志记录,但同时使用应用程序洞察,不仅仅是provides logging,但它让您能够对正在记录的数据进行日志记录+洞察。这是一天结束时的APM工具。谢谢。设置、查看和理解App Insight是下一个列表。我只想设置日志记录/跟踪,因为它是此次交付的MVP。感谢您的反馈。