iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >使用chrome控制台作为.Net的日志查看器
  • 281
分享到

使用chrome控制台作为.Net的日志查看器

2024-04-02 19:04:59 281人浏览 泡泡鱼
摘要

很多时候,我们需要查看日志的实时输出,这个时候往往只能选择控制台。我这里的日志框架是serilog,它有一个好处是控制台输出时可以高亮的形式显示其参数结构信息,如下图所示 但也存在

很多时候,我们需要查看日志的实时输出,这个时候往往只能选择控制台。我这里的日志框架是serilog,它有一个好处是控制台输出时可以高亮的形式显示其参数结构信息,如下图所示

但也存在许多不方便的地方:

  • 清屏不方便

  • 回看历史不方便

  • 日志过滤不方便

  • 消息不便复制出来保持

  • 复杂的消息不便查看

因此我也一直在找一个更理想的日志查看器,找了许多现成的日志查看器,都不甚理想。要是自己写一个的话,结构化日志的输出也是比较麻烦的,工作量太大。

最后将目标选定在了Chrome控制台上,找了一下chrome 控制台的语法,发现其可以高亮显示结构化数据。

并且还能展开,查看十分方便

另外,chrome控制台还自带许多特性:

  • 支持清屏

  • 支持显示时间(不需要日志信息中携带)

  • 支持类似日志自动分组

在输出样式上也是异常强大

  • 支持不同日志级别的样式

  • 支持日志分组

  • 支持对象结构化输出

  • 支持自定义样式

  • 支持输出为表格

简直是日志输出利器,因此就打算使用Chrome console作为实时日志查看器了。

架构

既然打算将chrome console作为日志输出,就得考虑实现方式了,一个简单的架构如下:

  • 程序输出日志时,将日志序列化为JSON格式,通过websocket发送到日志服务器WEB服务器)

  • 查看日志时,通过浏览器打开日志服务器提供日志的查看页面。

  • 客户端打开页面时,通过js脚本订阅日志服务器的日志,并解析日志,调用想用的指令输出到控制台

由于有了日志服务器,日志的输出成了订阅式的了,也可以非常方便的做日志过滤输出了。

序列化日志

要实现这个日志框架,第一步就是要将日志信息序列化成json格式,以Serilog为例,由于Serilog框架本身就提供了日志的结构化信息,实现起来是非常方便的。参照serilog文档自定义一个Sink即可,如下是一个简单的实现

public class JsonSink : ILogEventSink
{
    private readonly IFORMatProvider _formatProvider;

    public JsonSink(IFormatProvider formatProvider)
    {
        _formatProvider = formatProvider;
    }

    public void Emit(LogEvent logEvent)
    {
        var tokens   = logEvent.MessageTemplate.Tokens.Select(getFormat);
        var template = string.Join("", tokens);

        var paras = logEvent.Properties.Values.Select(getPara).ToArray();

        var level = logEvent.Level.ToString();
        var log = new
        {
            level,
            template,
            paras,
        };

        var text = JsonConvert.SerializeObject(log, Formatting.Indented);
        File.WriteAllText(@"r:\log.json", text);

        string getFormat(object token)
        {
            if (token is PropertyToken p)
                return "%o";
            else
                return token.ToString();
        }

        object getPara(LogEventPropertyValue v)
        {
            return JsonConvert.DeserializeObject(v.ToString());
        }
    }
}

这里需要实现的是Emit函数,可以通过LogEvent对象获取到结构化的信息,这里需要将它序列化成一个json对象,从而能被chrome js脚本解析。

一般来说,对于一个结构化的日志,主要需要包括如下几个参数: 告警级别、时间、消息模板、参数。这里简化起见,就没有加入时间了。另外,为了方便chrome console输出,将其模板转换了一下,转成了chrome console可以直接支持的消息模板。

需要注意的是,由于chrome console的输出模板和seriallog的消息模板不完全一致,我这里的算法还比较简陋,丧失了参数的名称信息,因此对输入还是有些限制的,那就是:

  • 参数只能使用一次

  • 参数的顺序必须和模板的顺序一致

由于大部分的日志是遵循这个限制的,以后再优化算法。对于如下日志记录。

var position  = new { Latitude = 25, Longitude = 134 };
var elapsedMs = 34;

Log.Information("Processed {@Position} in {Elapsed} ms.", position, elapsedMs);

输出的json如下(这里我是将其保存到文件了,实际实现应该是发送到日志服务器):

{
    "level": "Information",
    "template": "Processed %o in %o ms.",
    "paras": [
        {
            "Latitude": 25,
            "Longitude": 134
        },
        34
    ]
}

Chrome中输出

由于篇幅所限,这里不考虑数据如何发布和订阅的,仅仅介绍下chrome console中输出相关功能。

在chrome中输出需要靠js来实现,一个简单的实现如下:

var log = {
    "level": "Information",
    "template": "Processed %o in %o ms.",
    "paras": [{
        "Latitude": 25,
        "Longitude": 134
    }, 34]
};

var fn = console.log;
var logPara = [log.template].concat(log.paras);

fn.apply(this, logPara); 

这里日志信息中携带了级别、消息模板、参数三部分信息,需要和控制台api相对应。主要的难点在于由于参数是动态的,需要js函数动态参数的调用。代码比较简单,除掉上面的日志消息,就三行代码,就不多介绍了。

到此这篇关于使用chrome控制台查看.net日志的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 使用chrome控制台作为.Net的日志查看器

本文链接: https://www.lsjlt.com/news/153186.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用chrome控制台作为.Net的日志查看器
    很多时候,我们需要查看日志的实时输出,这个时候往往只能选择控制台。我这里的日志框架是serilog,它有一个好处是控制台输出时可以高亮的形式显示其参数结构信息,如下图所示 但也存在...
    99+
    2024-04-02
  • SpringBoot项目中控制台日志的保存配置操作
    SpringBoot 控制台日志的保存配置 情景:SpringBoot项目中需要把控制台日志保存下来。 实现方法: 1.在配置文件application-prod.yml 配置如下:...
    99+
    2024-04-02
  • 如何使用Journalctl查看并操作Systemd日志
    作为最具吸引力的优势,systemd拥有强大的处理与系统日志记录功能。在使用其它工具时,日志往往被分散在整套系统当中,由不同的守护进程及进程负责处理,这意味着我们很难跨越多种应用程序对其内容进行解读。相比之下,systemd尝试提供一套集中...
    99+
    2023-06-05
  • .Net core Blazor+自定义日志提供器实现实时日志查看器的原理解析
    目录场景实现原理如何使用?1、启用blazor server(若你本来是,直接跳过)2、安装咱的日志包:BXJG.BlazorServerLogger3、配置自定义配置和样式非微软的...
    99+
    2022-11-13
    net core Blazor日志查看器 .net core Blazor自定义日志提供器
  • 阿里云服务器操作日志怎么查看的
    要查看阿里云服务器操作日志,您可以按照以下步骤操作: 登录云服务器管理平台。在平台的首页,点击“系统管理”按钮并进入系统管理界面。 在系统管理界面中,找到“操作日志”选项卡。在操作日志中,您可以查看服务器的操作日志。 在操作日志中,您可...
    99+
    2023-10-27
    阿里 操作 服务器
  • 阿里云服务器操作日志怎么查看的啊
    一、查看阿里云服务器操作日志的步骤 登录阿里云控制台(Logs.aliyun.com),进入服务器配置页面。 在左侧导航栏中选择“操作日志”选项。 在弹出的“操作日志”页面中,您可以查看所有记录的操作系统、应用程序、网络等各种信息。 点...
    99+
    2023-10-28
    阿里 操作 服务器
  • spring boot使用logback日志级别打印控制操作得示例
    小编给大家分享一下spring boot使用logback日志级别打印控制操作得示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!因为公司业务需要,需要把性能日志...
    99+
    2023-06-06
  • 阿里云服务器操作日志怎么查看记录的
    操作系统和应用程序的日志记录:阿里云服务器上的所有应用程序和操作系统日志都会记录下来,包括系统和应用程序的错误、异常和性能数据。这些日志可以帮助您识别和解决应用程序或操作系统的故障。 网络日志:网络日志包括服务器连接到互联网的流量、数据包...
    99+
    2023-10-28
    阿里 操作 服务器
  • 如何查看阿里云服务器的操作日志文件
    1. 登录到阿里云控制台 首先,打开浏览器并登录到阿里云控制台。输入您的用户名和密码,然后点击登录。 2. 进入云服务器管理页面 在阿里云控制台的首页,点击左侧导航栏中的 "云服务器 ECS",然后选择您要查看操作日志的服务器实例。 3....
    99+
    2023-10-27
    阿里 操作 服务器
  • 阿里云服务器操作日志怎么查看的文件
    一、 查看服务器状态 登录服务器 如果您已经登录阿里云服务器,可以使用以下命令来查看服务器的状态: ls -al | grep -v 如果您没有登录阿里云服务器,可以使用以下命令: ls -al 查看日志 查看服务器的日志,...
    99+
    2023-10-28
    阿里 操作 服务器
  • 使用Selenium控制当前已经打开的chrome浏览器窗口
    目录前言应用场景(理论上)1. 打开浏览器2. 编写 Python程序获取控制 浏览器3. 总结后话前言 有过几个小伙伴问过我如何利用 Selenium 获取已经打开的浏览器窗口,正...
    99+
    2024-04-02
  • .Net Core 使用NLog记录日志到文件和数据库的操作方法
    NLog 记录日志是微软官方推荐使用。 接下来,通过配置日志记录到文件和Sql Server数据库。 第一步:首先添加包NLog.Config (可通过微软添加包命令Install-...
    99+
    2024-04-02
  • 使用 Loki 实现 Kubernetes 容器日志监控的方法
    目录一、基本介绍1.Loki 架构2.Loki 工作原理二、使用 Loki 实现容器日志监控1.安装 Loki2.安装 Promtail3.安装 Grafana4.验证一、基本介绍 ...
    99+
    2024-04-02
  • Java SpringBoot 使用拦截器作为权限控制的实现方法
    如何实现 首先拦截器是属于web这块的,那我们需要引入springboot web模块,具体版本在parent中 <dependency> <group...
    99+
    2024-04-02
  • 如何使用Casbin作为ThinkPHP的权限控制中间件
    目录概述安装中间件Casbin Model 配置验证概述 PHP-Casbin是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。 Think-Casbin是...
    99+
    2024-04-02
  • 怎么使用Casbin作为ThinkPHP的权限控制中间件
    这篇文章将为大家详细讲解有关怎么使用Casbin作为ThinkPHP的权限控制中间件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概述PHP-Casbin是一个强大的、高效的开源访问控制框架,它支持基于各...
    99+
    2023-06-15
  • 你的Go路径设置是否有问题?如何使用Bash查看日志?
    如果你在使用Go语言开发应用程序时,经常遇到一些奇怪的错误,可能是因为你的Go路径设置有问题。正确设置Go路径对于顺利编译和运行程序至关重要。本文将介绍如何正确设置Go路径,并演示如何使用Bash查看日志。 第一步:检查Go路径设置 在开...
    99+
    2023-10-07
    path bash 日志
  • 你是否遇到了Go路径问题?使用Bash查看日志的技巧。
    在使用Go语言进行开发时,路径问题可能是一个常见的问题。当你的代码需要引用其他包或依赖时,正确设置路径非常重要。如果出现错误,你可能会遇到无法编译、运行或测试的问题。在这篇文章中,我们将介绍如何使用Bash查看日志文件,以帮助你解决Go路...
    99+
    2023-10-07
    path bash 日志
  • 怎么用虚拟主机cPanel面板查看服务器的访问日志
    怎么用虚拟主机cPanel面板查看服务器的访问日志,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。相信大家都在自己的网站上安装了网站统计的代码,如Google analyti...
    99+
    2023-06-12
  • 如何使用Git作为PHP开发的版本控制工具?
    Git是目前最流行的版本控制工具之一,广泛应用于各种编程语言和开发环境中。对于PHP开发者来说,Git是一个非常有用的工具,可以帮助他们更好地管理代码,并与其他开发者协同工作。本文将介绍如何使用Git作为PHP开发的版本控制工具。 一、Gi...
    99+
    2023-06-30
    http 关键字 git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作