ASP.NET Core中如何通过配置文件配置HTTP日志记录字段?
ASP.NET Core中如何通过配置文件配置HTTP日志记录字段?
当然可以啦!完全不用硬编码HttpLoggingFields,咱们直接通过appsettings.json来配置就行,步骤很简单:
第一步:在appsettings.json中添加HTTP日志配置节点
打开你的appsettings.json,新增一个HttpLogging节点,把想要记录的日志字段用逗号分隔:
{ "Logging": { // 保留原有日志配置... }, "HttpLogging": { "LoggingFields": "Request, Response" } }
这里的字段值要和HttpLoggingFields枚举的成员名称对应,比如你还可以按需组合RequestHeaders、ResponseHeaders、RequestQuery、RequestBody、ResponseBody这些选项。
第二步:在Program.cs中绑定配置
接下来要让ASP.NET Core把配置文件里的设置绑定到HttpLoggingOptions上,有两种常用方式:
方式一:在AddHttpLogging委托中绑定
直接在注册服务的时候绑定配置:
builder.Services.AddHttpLogging(logging => { // 把appsettings.json里的HttpLogging节点绑定到配置对象上 builder.Configuration.Bind("HttpLogging", logging); });
方式二:单独使用Configure方法绑定
这种方式逻辑更清晰,适合需要拆分配置逻辑的场景:
// 先注册HTTP日志服务 builder.Services.AddHttpLogging(); // 再从配置文件读取并绑定HttpLoggingOptions builder.Services.Configure<HttpLoggingOptions>( builder.Configuration.GetSection("HttpLogging") );
额外:扩展配置其他HTTP日志选项
除了LoggingFields,你还可以在配置文件里一并设置其他HTTP日志相关的选项,比如指定要记录的请求/响应头、过滤媒体类型等:
{ "HttpLogging": { "LoggingFields": "RequestHeaders, ResponseBody, RequestQuery", "RequestHeaders": [ "Authorization", "User-Agent" ], "ResponseHeaders": [ "Content-Type", "X-Custom-Header" ], "MediaTypeOptions": { "MediaTypes": [ "application/json", "text/plain" ] } } }
这样配置后,启动应用时,HTTP日志就会完全按照你在配置文件里指定的规则来记录啦,不需要修改代码就能灵活调整日志字段~
备注:内容来源于stack exchange,提问作者silent
相关产品推荐
相关产品推荐

