You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service多虚拟目录下.NET Core API应用日志失效问题咨询

解决Azure App Service虚拟目录子应用日志不生效的问题

没错,这种多虚拟目录的场景下,子应用确实需要在配置代码里添加额外的日志配置——因为虚拟目录的子应用不会自动继承主应用的Azure诊断日志输出设置,得单独做配置才能让门户的诊断日志捕获到子应用的日志内容。

核心原因

Azure App Service的诊断日志依赖应用将日志输出到特定系统目录(D:\home\LogFiles\Application),主应用的日志配置不会自动传递给虚拟目录里的子应用,所以子应用必须明确配置日志输出到这个目录,才能被门户的诊断设置识别并展示。

.NET Core 6+ 代码配置示例(Program.cs)

在子应用的Program.cs中,添加Azure诊断日志的专属配置:

var builder = WebApplication.CreateBuilder(args);

// 1. 启用Azure Web App诊断日志支持
builder.Logging.AddAzureWebAppDiagnostics();
// 同时保留控制台/调试日志(可选,方便本地调试时查看)
builder.Logging.AddConsole();
builder.Logging.AddDebug();

// 2. 配置日志文件存储细节(可选,可指定子应用专属目录,便于区分主/子应用日志)
builder.Services.Configure<AzureFileLoggerOptions>(options =>
{
    options.FileName = "subapp-application-";
    options.FileSizeLimit = 50 * 1024 * 1024; // 单日志文件最大50MB
    options.RetainedFileCountLimit = 5; // 保留最近5个日志文件
    options.LogDirectory = @"D:\home\LogFiles\Application\MySubApp"; // 子应用独立日志目录
});

// 其他服务注册(比如接口控制器等)
builder.Services.AddControllers();

var app = builder.Build();

// 中间件配置(如权限验证等)
app.UseAuthorization();

app.MapControllers();

app.Run();

第三方日志框架(以Serilog为例)的配置

如果你的项目用Serilog作为日志框架,只需要添加Azure Web App的Sink即可:

// 先初始化Serilog配置
Log.Logger = new LoggerConfiguration()
    .WriteTo.AzureWebAppDiagnostics() // 关键:添加Azure诊断日志输出支持
    .CreateLogger();

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog(); // 替换默认日志系统

// 其他服务配置...

额外注意事项

  • 配置完成后,必须重启子应用,让新的日志配置生效。
  • 在Azure门户的诊断设置中,确认已经启用了「应用日志(文件系统)」或「应用日志(Blob存储)」,并且日志级别设置正确(比如选Information及以上)。
  • 可以通过门户的「日志流」功能实时查看子应用日志,快速验证配置是否生效。

内容的提问来源于stack exchange,提问作者Manu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:18:00