只有累積,沒有奇蹟

2019年5月9日 星期四

[NETCore] Serilog 好幫手 - Serilog Analyzer

前言
前面透過幾篇文章介紹了關於 Serilog 在 ASP.NET Core 中的應用,分別是
  • 結構化日誌 Serilog 初體驗
  • 結構化日誌 Serilog - 配置設定
  • 結構化日誌 Serilog - Events Types 和 Enrichment
  • 三篇文章從 Serilog 基本使用以及設定都做簡單的介紹,今天要分享的是 Serilog Analyzer 擴充套件,它是基於 Roslyn 針對代碼進行分析,可以幫助開發者在寫 Code 時檢查潛在的問題及建議改善項目,形容得很抽象以下直接透過實際範例說明,以及自己在使用後覺得不錯及有幫助的地方,幫助各位更快了解若有問題歡迎提出一起討論。

    下載
    可以在 Marketplace 找到,下載 傳送門

    分析
    在執行時請先注意開啟 cmd 需要使用 Admin 權限執行,否則會有執行異常或是告知沒權限的錯誤訊息,以下為開啟時應用程式時用 administrator 開啟的畫面,用管理者身分執行 cmd

    Exception Usage
    當記錄 Log 是應用在例外情境時,會檢查是否有傳遞  exception  參數,而不是定義在屬性中
    try
    {
        // to do something
    }
    catch (Exception ex)
    {
        Log.Error("Could not save {File}: {Error}", file, ex);
        throw;
    }
    以上代碼會提示 The exception 'ex' should be passed as first argument,如下圖所示
    因此正確的記錄方式應該是以下代碼
    catch (Exception ex)
    {
       Log.Error(ex, "Could not save {File}", file);
    }

    Property Binding Verifier
    檢查紀錄 Log 時的 property 是否有遺漏,舉例來說下列代碼要紀錄  file  與  driectory  ,少傳入一個參數在紀錄時會發生錯誤
    Log.Information("Saving {File} to {Directory}", file);               
    筆記 : 使用 Serilog Analyzer 前後比較,未安裝前是不會提示錯誤的唷

    Message Template Syntax Verifier
    Message Template 檢查也就是會確認你的格式是否正確,如果違反 message template 會提示錯誤,以下為格式錯誤範例(少一個 { )
    Log.Information("Saving {File to {Directory}", file, directory);    
    提示如下
    正確如下
    Log.Information("Saving {File} to {Directory}", file, directory);

    Configuration
    分析 Serilog logging 配置生成對應的 <appSettings> 或是 appSettings.json,不囉嗦直接看官方範例

    後記
    以上簡單僅介紹幾種使用的情境,官方支援更多的檢查與驗證,如果有興趣了解更多可以參考官方網站,另外有在網路上看到使用時會與 Resharper 衝突,但自己在使用時並未遇到衝突而不能使用的情境,如果有遇到也可以留言一起討論解決方案 :)

    參考
    SerilogAnalyzer

    0 意見:

    張貼留言

    Copyright © m@rcus 學習筆記 | Powered by Blogger

    Design by Anders Noren | Blogger Theme by NewBloggerThemes.com