Como configurar o fornecedor de registos de aplicações Azure para um ASP.NET app principal?
a minha configuração:
a seguir ASP.NET documentação do registo principal(https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1#azure-app-service-provider), eu adicionei um fornecedor Azure App Serviço de registro para o meu app:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddAzureWebAppDiagnostics();
})
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 10 * 1024;
options.RetainedFileCountLimit = 5;
})
)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:8080");
webBuilder.UseStartup<Startup>();
});
a configuração de registo na aplicação.configuração:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
Estou a registar uma informação, um aviso e um erro no meu controlador.
de acordo com a documentação Azure (https://docs.microsoft.com/en-us/azure/app-service/troubleshoot-diagnostic-logs#enable-application-logging-linuxcontainer), activei o registo para o sistema de ficheiros na aplicação Azure - > registos do serviço de aplicações:
A minha aplicação é bem utilizada e funciona. Estou à espera de encontrar um registar o ficheiro com os nomes 'azure-diagnostics' algures no sistema de ficheiros da aplicação. Eu verifiquei o sistema de arquivos indo para Azure App - > SSH e executando:find . -name '*azure-diagnostics*'
O que não devolve nada. Eu também verifiquei o sistema de arquivos usando Kudu E VS Cloud Explorer, os arquivos não estão lá. Se eu adicionar o fornecedor de registro da consola, os registros aparecem nos arquivos de registro Azure padrão muito bem. O que me está a escapar?
3 answers
Não consegui fazê-lo funcionar usando o fornecedor de Registo AzureWebAppDiagnostics, mas consegui resolver o meu problema usando o fornecedor de serilog com um lavatório de ficheiros.
No programa.cs:
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"../../LogFiles/azure-diagnostics-", fileSizeLimitBytes: 50 * 1024, rollingInterval: RollingInterval.Day, retainedFileCountLimit: 5)
.CreateLogger();
try
{
CreateHostBuilder(args).Build().Run();
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:8080");
webBuilder.UseStartup<Startup>();
});
}
A chamada UseSeriLog () substitui a fábrica de registos do MS por omissão, para que eu pudesse também apagar a configuração de registo dos 'applsettings'.
Agora posso ver os meus ficheiros de Registo personalizados a aparecer na pasta /home / LogFiles como esperado.
Acho que você precisa configurar o blob para armazenar os logs Também, você pode tentar configurar o arquivo
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
}).Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "log.txt";
}))
Verificar aplicação de amostras
A localização por omissão dos ficheiros de registo está na pasta D:\home\LogFiles\Application
, e o nome por omissão do ficheiro é diagnostics-yyyymmdd.txt
.
Adicione o seguinte fornecedor no programa.cs.
.ConfigureLogging(logging =>
{
logging.AddAzureWebAppDiagnostics();
logging.AddConsole();
})
Ligue para logger.LogWarning ("message");
no seu código para escrever no ficheiro de Registo. Se utilizar LogWarning
certifique-se que define o nível como um aviso ou mais detalhado.
Por favor consulte este número .