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

.NET7 ASP.NET Core WebApi日志配置:Dev写文件,Azure部署用Application Insights

.NET7 ASP.NET Core WebApi 多环境日志配置方案

针对开发环境用NLog写入文件、Azure部署后用Application Insights记录日志的需求,按以下步骤配置:

1. 安装依赖包

  • 开发环境日志依赖:安装NLog.Web.AspNetCore NuGet包
  • Azure环境日志依赖:安装Microsoft.ApplicationInsights.AspNetCore NuGet包

2. 编写环境感知的日志注册逻辑

在Program.cs中,根据当前运行环境(通过ASPNETCORE_ENVIRONMENT环境变量判断),分别注册不同的日志服务:

var builder = WebApplication.CreateBuilder(args);

// 添加WebApi核心服务
builder.Services.AddControllers();

// 根据环境配置日志服务
var env = builder.Environment;
if (env.IsDevelopment())
{
    // 开发环境:清空默认日志提供器,启用NLog文件日志
    builder.Logging.ClearProviders();
    builder.Host.UseNLog();
}
else
{
    // 非开发环境(Azure部署):启用Application Insights日志
    builder.Services.AddApplicationInsightsTelemetry();
}

var app = builder.Build();

// 中间件配置
app.UseAuthorization();
app.MapControllers();

app.Run();

3. 配置NLog(开发环境)

在项目根目录添加nlog.config文件,配置日志写入本地文件的规则,并将文件属性设置为始终复制(右键文件→属性→复制到输出目录→始终复制)。示例配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="logs/nlog-internal.log">

  <!-- 日志目标:按日期分割写入本地文件 -->
  <targets>
    <target name="file" xsi:type="File"
            fileName="logs/${shortdate}.log"
            layout="${longdate} ${level} ${message} ${exception:format=ToString}" />
  </targets>

  <!-- 日志规则:所有级别日志写入文件目标 -->
  <rules>
    <logger name="*" minlevel="Trace" writeTo="file" />
  </rules>
</nlog>

4. 配置Application Insights(Azure部署环境)

  • 在Azure门户创建Application Insights资源,获取连接字符串(推荐使用,替代旧版Instrumentation Key)
  • 在项目的appsettings.Production.json中添加Application Insights配置:
{
  "ApplicationInsights": {
    "ConnectionString": "你的Application Insights连接字符串"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

5. 部署到Azure的注意事项

  • 部署时确保Azure App Service的ASPNETCORE_ENVIRONMENT环境变量设置为Production(或其他非Development的值),可在App Service的「配置→应用程序设置」中配置
  • 也可以直接在Azure App Service的配置中设置ApplicationInsights__ConnectionString,覆盖配置文件中的值,实现更灵活的配置管理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:55:23