ASP.NET Core 6中UseHttpLogging结合NLog无法写入日志文件
问题原因与解决方案
你的问题出在http-file目标的Layout配置格式错误,导致NLog无法正确解析该目标的输出格式,进而无法写入文件。
错误点分析
你当前的http-file目标中,layout被写成了一个字符串:
"layout": "type=JsonLayout includeEventProperties=true IncludeScopeProperties=true"
在appsettings.json的NLog配置里,JsonLayout需要以JSON对象的形式定义,而不是拼接字符串。这种错误格式会让NLog无法识别Layout类型,最终导致日志无法写入文件(可能 fallback 到控制台输出)。
修正后的http-file目标配置
将http-file的配置修改为以下正确格式:
"http-file": { "type": "File", "fileName": "c:/temp/CosmosAPIProxy-Http_Request.log", "layout": { "type": "JsonLayout", "includeEventProperties": true, "includeScopeProperties": true } }
额外检查项
- 确认HttpLogging中间件启用正确
在Program.cs中确保已添加并启用中间件,同时按需配置日志字段:
builder.Services.AddHttpLogging(options => { // 按需选择要记录的字段,比如记录所有字段 options.LoggingFields = HttpLoggingFields.All; }); // 注意中间件顺序,UseHttpLogging要放在路由之前 app.UseHttpLogging(); app.UseRouting();
- 日志级别匹配
你的NLog规则中对Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware设置的minLevel是Info,确认HttpLoggingMiddleware输出的日志级别确实是Info及以上(默认是Info级别)。如果需要记录更详细的日志,可将minLevel改为Debug。
内容的提问来源于stack exchange,提问作者user1337493
相关产品推荐
相关产品推荐

