介绍一个.Net远程日志组件


对于软件开发的阶段和正式运行阶段,我们都需要查看日志来诊断出现的问题。不过,在查看日志时需要登录服务器,找到特定的日志文件,再查看其中的内容,这显然不是很方便。

为了解决这个问题,我们可以使用远程日志,让所有的程序产生的日志都可以通过一个 web 页面进行统一查看。这种方式可以使得维护工作更加方便。

Jack.RemoteLog 是一个 .net core 环境下提供全文检索功能的远程日志组件,仅需要简单的安装和配置即可使用。

部署日志服务器程序

首先,我们先部署一下RemoteLog的服务器端。

直接下载运行

https://cccscls-my.sharepoint.com/:f:/g/personal/jack_mutc_ca/Et7VbP7sX31EiN-NQkPL0RgBL5RBG15_PyepR5Tx0PaqsQ?e=BTngox

下载对应操作系统的RemoteLogServer压缩文件,解压后,运行Jack.RemoteLog.WebApi.exe(windows)或者Jack.RemoteLog.WebApi(linux)

也可以用Docker安装

docker pull jackframework/jackremotelogwebapi:latest


程序中使用RemoteLog

在appsettings.json文件中,设置日志服务器url

  "Logging": {
    "ServerUrl": "http://127.0.0.1:9000",
    "ContextName": "YourContextName",
    "LogLevel": {
      "Default": "Debug"
    },
    "Console": {
      "LogLevel": {
        "Default": "Information"
      }
    }
  }

在工程中引用 nuget 包:Jack.RemoteLog
注册 Jack.RemoteLog 为底层日志处理引擎

            services.AddLogging(builder =>
            {
                builder.AddConfiguration(configuration.GetSection("Logging"));
                builder.AddConsole();
                builder.UseJackRemoteLogger(configuration);
            });

如果 RemoteLog 服务器端设置了身份验证,则这里需要设置用户名、密码

            services.AddLogging(builder =>
            {
                builder.AddConfiguration(configuration.GetSection("Logging"));
                builder.AddConsole();
                builder.UseJackRemoteLogger(configuration , new Options 
                {
                       UserName = "",
                       Password = ""
                });
            });

当您使用 ILogger 接口实例来记录信息时,该信息将被记录到日志服务器。

而要查看服务器上的所有日志,您可以通过浏览器打开 http://127.0.0.1:9000,然后可以轻松地获取你的程序日志以进行监视和分析。

在这里插入图片描述

日志链路追踪功能

以跟踪标识符(TraceID)值为依据,为每个日志记录分配相应的标识符。这样,在用户界面界面上,将可以通过该标识符(TraceID)来搜索和过滤相关的日志记录。

定义Filter生成TraceId

编写一个ILogItemFilter,实现自定义的traceId赋值

    public class MyLogFilter : ILogItemFilter
    {
        public void OnExecuting(LogItem logItem)
        {
            logItem.TraceId = "testTraceId5";
        }
    }

然后注入你的ILogItemFilter

services.AddSingleton<ILogItemFilter,MyLogFilter> ();

这样,每条记录的日志都会附带一个TraceId。

源码地址

https://github.com/simpleway2016/JackRemoteLog.git



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值