我已经启用了对FileSystem和Blob的应用程序日志记录。我使用ILogger<T>.LogInformation()和Trace.WriteLine()记录消息。所有这些都不能在水珠中看到。我也无法在文件系统上找到它们。当我启用日志流时,我也看不到它们。
我是否需要在我的ASP.NET核心应用程序中配置什么?
发布于 2019-12-24 06:37:14
[Microsoft.Extensions.Logging.AzureAppServices][1]提供程序包将日志写入Azure App应用程序文件系统中的文本文件,并写入Azure存储帐户中的blob存储。
提供者包不包括在共享框架中。若要使用提供程序,请将提供程序包添加到项目中。
若要配置提供程序设置,请使用AzureFileLoggerOptions和AzureBlobLoggerOptions,如以下示例所示:
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
var todoRepository = host.Services.GetRequiredService<ITodoRepository>();
todoRepository.Add(new Core.Model.TodoItem() { Name = "Feed the dog" });
todoRepository.Add(new Core.Model.TodoItem() { Name = "Walk the dog" });
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogInformation("Seeded the database.");
host.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
.ConfigureServices(serviceCollection => serviceCollection
.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
}).Configure<AzureBlobLoggerOptions>(options =>
{
options.BlobName = "log.txt";
})
)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});您可以参考下面的链接以获得其他参考:
希望能帮上忙。
发布于 2019-12-24 09:48:25
下面是一种简单的方法(所提到的文章是这里):
我用.NET核心2.2mvc项目测试了它。
必要的nuget套餐:
Microsoft.Extensions.Logging.AzureAppServices,版本2.2.0
1.在Startup.cs -> ConfigureServices方法中,添加以下代码:
services.AddSingleton<ILoggerFactory>(new LoggerFactory());在Startup.cs -> Configure方法中,将其更改如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
//add the following code here
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
loggerFactory.AddAzureWebAppDiagnostics(
new AzureAppServicesDiagnosticsSettings
{
OutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss zzz} [{Level}] {RequestId}-{SourceContext}: {Message}{NewLine}{Exception}"
}
);
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}然后在HomeController.cs中添加以下代码:
private readonly ILogger _logger;
public HomeController(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<HomeController>();
}
public IActionResult Index()
{
_logger.LogInformation("This is a Log information!!!");
_logger.LogError("This is a Logger error!!!");
return View();
}2.在发布到azure后,在azure门户->中,在web应用程序->应用程序服务日志中,设置blob存储。截图如下:

3.运行web,并检查指定blob存储中的日志:

https://stackoverflow.com/questions/59462181
复制相似问题