亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

評估已配置的日志提供者的LogLevel

評估已配置的日志提供者的LogLevel

C#
慕容708150 2021-03-30 16:13:29
我需要在asp.net core 2.0 Web應用程序中記錄請求/響應。為此,我們創建了一個RequestLoggingMiddleware(請參見下文)。該解決方案的缺點在于,將在每個請求中讀取主體流。有沒有一種方法可以評估是否有針對特定日志級別配置的logprovider。例如,在沒有logprovider正在偵聽DebugLog-Level的情況下,我們不需要讀取主體流。public class RequestLoggingMiddleware{    public ILogger<RequestLoggingMiddleware> Logger { get; }    public RequestDelegate NextMiddleware { get; }    public RequestLoggingMiddleware(RequestDelegate nextMiddleware, ILogger<RequestLoggingMiddleware> logger)    {        NextMiddleware = nextMiddleware;        Logger = logger;    }    public async Task Invoke(HttpContext context)    {        using (MemoryStream loggableResponseStream = new MemoryStream())        {            Logger.LogDebug(await FormatRequest(context.Request));            await NextMiddleware(context);        }    }    private static async Task<string> FormatRequest(HttpRequest request)    {        Stream body = request.Body;        request.EnableRewind();        byte[] buffer = new byte[Convert.ToInt32(request.ContentLength)];        await request.Body.ReadAsync(buffer, 0, buffer.Length);        string bodyAsText = Encoding.UTF8.GetString(buffer);        request.Body = body;        var messageObjToLog = new        {            scheme = request.Scheme,            host = request.Host,            path = request.Path,            queryString = request.Query,            requestBody = bodyAsText        };        return JsonConvert.SerializeObject(messageObjToLog);    }}
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

ILogger接口的IsEnabled方法定義為:


bool IsEnabled(LogLevel logLevel);

有沒有一種方法可以評估是否有針對特定日志級別配置的logprovider。


的默認實現會ILogger保留已配置記錄器的集合。IsEnabled方法的實現與您所描述的完全相同:true如果至少一個記錄器啟用了指定的日志級別,則會枚舉所有記錄器,并返回所有記錄器。


github上的Logger源代碼


因此,以下檢查將為您完成這項工作:


if (logger.IsEnabled(LogLevel.Debug))

{

    //  ...

}


查看完整回答
反對 回復 2021-04-10
  • 1 回答
  • 0 關注
  • 186 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號