在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
}
说明
- txtPath如果使用了ZeroNet,会被强制覆盖为部署根目录下的 logs 文件夹下
- level包括: Debug Trace Warning System Error五个级别
- sql日志是一个亮点,它以日志形式记录EntityModel所执行的所有Sql语句,可正确跟踪到SQL执行的问题,无需要编写,打开配置即可。
- Monitor也是一个亮点,它以树形方式记录调用的层级关系及使用的资源信息.
如何使用
- 记录异常日志
try
{
//TODO:
}
catch (Exception e)
{
LogRecorder.Exception(e);
}
可在对应日期文件夹目录下的 error.xxx.log中找到对应的日志内容
xxx 为数字序号,是为了防止日志文件过大而进行了拆分
- 记录系统日志
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|
- 使用跟踪范围MonitorScope.CreateScope
可以多级嵌套 - 使用跟踪输出LogRecorder.MonitorTrace方法
- LogRecorder的其它方法不写入跟踪日志
查看日志
日志目录类似下图