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

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
  }
}

额外检查项

  1. 确认HttpLogging中间件启用正确
    在Program.cs中确保已添加并启用中间件,同时按需配置日志字段:
builder.Services.AddHttpLogging(options =>
{
    // 按需选择要记录的字段,比如记录所有字段
    options.LoggingFields = HttpLoggingFields.All;
});

// 注意中间件顺序,UseHttpLogging要放在路由之前
app.UseHttpLogging();
app.UseRouting();
  1. 日志级别匹配
    你的NLog规则中对Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware设置的minLevel是Info,确认HttpLoggingMiddleware输出的日志级别确实是Info及以上(默认是Info级别)。如果需要记录更详细的日志,可将minLevel改为Debug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:16:05