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的其它方法不写入跟踪日志

查看日志

日志目录类似下图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/longhutian/article/details/88188871