EntityModel 系列之 通過LogRecorder寫日誌

在EntityModel中,提供了一個簡單的日誌工具類LogRecorder

Nuget包

如果只單獨使用日誌功能,引用的包名爲:Agebull.Common.LogRecorder

其它Agebull族的Nuget包關係如下
在這裏插入圖片描述

日誌的配置

在appSettions.json的LogRecorder節

"LogRecorder": {
    /*日誌記錄的地址*/
    "txtPath": "c:\\log\\auth",
    /*是否開啓跟蹤日誌*/
    "monitor": true,
    /*是否開啓SQL語句日誌*/
    "sql": false,
    "level": "Debug",
    "console": true
  }

說明

  1. txtPath如果使用了ZeroNet,會被強制覆蓋爲部署根目錄下的 logs 文件夾下
  2. level包括: Debug Trace Warning System Error五個級別
  3. sql日誌是一個亮點,它以日誌形式記錄EntityModel所執行的所有Sql語句,可正確跟蹤到SQL執行的問題,無需要編寫,打開配置即可。
  4. Monitor也是一個亮點,它以樹形方式記錄調用的層級關係及使用的資源信息.

如何使用

  1. 記錄異常日誌
try
{
    //TODO:
}
catch (Exception e)
{
    LogRecorder.Exception(e);
}

可在對應日期文件夾目錄下的 error.xxx.log中找到對應的日誌內容

xxx 爲數字序號,是爲了防止日誌文件過大而進行了拆分

  1. 記錄系統日誌
LogRecorder.SystemLog("%s:操作成功", "name更新");

可在對應日期文件夾目錄下的 system.xxx.log中找到對應的日誌內容
3. 記錄Debug日誌

LogRecorder.Debug("Debug");

可在對應日期文件夾目錄下的 debug.xxx.log中找到對應的日誌內容
4. 記錄Trace日誌

LogRecorder.Trace("Trace");

可在對應日期文件夾目錄下的 trace.xxx.log中找到對應的日誌內容
4. 記錄Warning日誌

LogRecorder.Warning("Warning");

可在對應日期文件夾目錄下的 system.xxx.log中找到對應的日誌內容

記錄跟蹤日誌

      using (MonitorScope.CreateScope("Do it"))
      {
          using (MonitorScope.CreateScope("Step 1"))
          {
              LogRecorder.MonitorTrace("開始");
              LogRecorder.MonitorTrace("成功");
          }
          using (MonitorScope.CreateScope("Step 2"))
          {
              LogRecorder.MonitorTrace("開始");
              LogRecorder.MonitorTrace("結束");
          }
      }

日誌內容:

可在對應日期文件夾目錄下的 monitor.xxx.log中找到對應的日誌內容

Date:3/5/19 4:22:45 PM    RequestId:Y584FKB75V    Machine:ZeroCenter:WeichatBridge:7N31
                       標題                        |狀態|   時間   |   用 時(ms)   |
┌/SmallProgram/v1/erhcmember/is/getcard            |開始| 16:22:45 |
├ApiRouter
├┬http://zero.yizuanbao.cn/SmallProgram/v1/erhcmember/is/getcard|開始| 16:22:45 |
│├┬HTTP                                          |開始| 16:22:45 |
││├Headers:{"CONNECTION":["close"],"CONTENT-TYPE":["application/json; charset=UTF-8"],"ACCEPT-ENCODING":["gzip, deflate"],"COOKIE":[""],"HOST":["zero.yizuanbao.cn"],"REFERER":["http://127.0.0.1:58338/index.worker.html?mockType=alipay&referrerInfo=%7B%22appId%22%3A%222018051560091226%22%2C%22data%22%3A%7B%7D%7D&query="],"CONTENT-LENGTH":["75"]}
││├Method:POST
││├RequestId:-TTQ48L
││├Command:SmallProgram/v1/erhcmember/is/getcard
││├Context:{"name":"agebull","idcard_type":"01","idcard_value":"330304199106144520"}
││└HTTP                                          |完成| 16:22:45 |    0.0/    0.0|
│├┬CallZero                                      |開始| 16:22:45 |
││├┬內部Zero調用                                |開始| 16:22:45 |
│││├Station:SmallProgram,Command:v1/erhcmember/is/getcard
│││├Remte result:{"data":{"is_card":0},"rid":"-TTQ48L","oid":"37436171902528423","status":{"guide":null,"describe":null,"point":null,"code":-20010,"http":"200","msg":"卡不存在!"},"success":true}
│││├Result:{"data":{"is_card":0},"rid":"-TTQ48L","oid":"37436171902528423","status":{"guide":null,"describe":null,"point":null,"code":-20010,"http":"200","msg":"卡不存在!"},"success":true}
│││└內部Zero調用                                |完成| 16:22:46 |    0.0/  684.8|
││└CallZero                                      |完成| 16:22:46 |    0.0/  684.8|
│├UserState : Success
│├ZeroState : Ok
│├Result:{"data":{"is_card":0},"rid":"-TTQ48L","oid":"37436171902528423","status":{"guide":null,"describe":null,"point":null,"code":-20010,"http":"200","msg":"電子健康卡不存在!"},"success":true}
└http://zero.yizuanbao.cn/SmallProgram/v1/erhcmember/is/getcard|完成| 16:22:46 |    0.1/  684.9|
└/SmallProgram/v1/erhcmember/is/getcard            |完成| 16:22:46 |    0.1/  686.0|
  1. 使用跟蹤範圍MonitorScope.CreateScope
    可以多級嵌套
  2. 使用跟蹤輸出LogRecorder.MonitorTrace方法
  3. LogRecorder的其它方法不寫入跟蹤日誌

查看日誌

日誌目錄類似下圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章