.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.AspNetCoreNLog.Targets.AzureBlobStorage
- 调试排查:若仍未生效,开启NLog内部日志(
internalLogLevel="Info"),查看生成的internal-nlog.txt文件,可获取配置加载的详细错误信息。
内容的提问来源于stack exchange,提问作者Rahul Hendawe
相关产品推荐
相关产品推荐

