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

.NET 6中通过AppSettings配置NLog的Azure Blob连接字符串问题

解决.NET 6中从appsettings.json配置NLog AzureBlobStorage连接字符串的问题

核心实现步骤

在.NET 6的顶级语句结构Program.cs中,必须严格遵循配置加载→NLog初始化→日志服务注册的执行顺序,以下是可直接复用的正确实现:

1. Program.cs的正确代码结构

// 1. 初始化Web应用构建器,自动加载appsettings.json等配置文件
var builder = WebApplication.CreateBuilder(args);

// 2. 清空默认日志提供器,配置NLog读取应用配置
builder.Logging.ClearProviders();
builder.Host.ConfigureLogging(logging =>
{
    logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
})
.UseNLog(); // 关键:必须在配置加载完成后调用该方法

// 3. 注册业务所需服务(按需调整)
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 中间件配置(按需调整)
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

2. NLog.config的配置调整

确保AzureBlobStorage目标的connectionString使用配置变量引用,而非硬编码:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Info"
      internalLogFile="internal-nlog.txt">

  <extensions>
    <add assembly="NLog.Extensions.Logging"/>
    <add assembly="NLog.Web.AspNetCore"/>
    <add assembly="NLog.Targets.AzureBlobStorage"/>
  </extensions>

  <targets>
    <target xsi:type="AzureBlobStorage"
            name="azureBlob"
            connectionString="${configsetting:name=AzureBlobStorage.ConnectionString}" <!-- 引用appsettings中的配置项 -->
            container="logs"
            blobName="log-${shortdate}.txt"
            layout="${longdate}|${level}|${message} ${exception:format=tostring}"/>
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="azureBlob"/>
  </rules>
</nlog>

3. appsettings.json的配置项

确保配置文件中包含Azure存储连接字符串:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AzureBlobStorage": {
    "ConnectionString": "你的Azure存储账户连接字符串"
  }
}

关键注意事项

  • 执行顺序不可颠倒:必须先通过WebApplication.CreateBuilder(args)加载配置,再调用UseNLog(),否则NLog无法读取到appsettings中的值。
  • 依赖包检查:确认已安装以下NuGet包:
    • NLog.Web.AspNetCore
    • NLog.Targets.AzureBlobStorage
  • 调试排查:若仍未生效,开启NLog内部日志(internalLogLevel="Info"),查看生成的internal-nlog.txt文件,可获取配置加载的详细错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:05:28