结构化日志和集中日志服务

目录

结构化日志

Serilog使用

集中化日志

集中日志服务

Exceptionless

控制台项目

总结


结构化日志

结构化日志比普通文本更利于日志的分析,比如统计“邮件发送失败”错误发生了多少次。

NLog也可以配置结构化日志,不过配置麻烦,推荐用Serilog。

Serilog使用

  1. NuGet安装:Serilog.AspNetCore。
  2. static void Main(string[] args)
    {ServiceCollection services = new ServiceCollection();services.AddLogging(logBuilder =>{Log.Logger = new LoggerConfiguration().MinimumLevel.Debug().Enrich.FromLogContext().WriteTo.Console(new JsonFormatter()).CreateLogger();logBuilder.AddSerilog();});services.AddScoped<Test2>();using (ServiceProvider sp = services.BuildServiceProvider()){Test2 test2 = sp.GetRequiredService<Test2>();test2.Test();}
    }
  3. 要记录的结构化数据通过占位符来输出:logger.LogWarning("新增用户 {@person}",new { Id=3,Name="zack"});
  4. class Test2
    {private readonly ILogger<Test2> logger;public Test2(ILogger<Test2> logger){this.logger = logger;}public void Test(){User user = new User { Name = "admin", Email = "123@qq.com" };logger.LogDebug("注册用户{@person}", user);logger.LogDebug("注册用户", user);}
    }class User
    {public string Name { get; set; }public string Email { get; set; }
    }

  5. 同样可以输出到文件、数据库、MongoDB等。

集中化日志

集群化部署环境中,有N个服务器,如果每个服务器都把日志记录到本地文件,不便于查询、分析。需要把日志保存到集中化的日志服务器中。

集中日志服务

  1. 使用NLog、Serilog等可以把日志记录到数据库、MongoDB等地方,就可以实现“结构化、集中日志服务”,不过需要自己编写日志分析程序。
  2. 公有云厂商一般都提供了日志云服务,都带分析功能,都有对应Serilog插件,即使没有提供,开发一个插件也不麻烦。
  3. 如果没有用云平台或者想自己控制日志服务,可以使用Exceptionless或者ELK等。
  4.  Exceptionless、ELK即提供了现成的云服务,也提供了自己部署(Self Hosting)的模式。由于网速等原因,云服务不符合中国的要求,不过可以试用一下,看是否满足要求,再自己部署。

Exceptionless

控制台项目
  1. 到Exceptionless官网注册、登录后,新建一个项目,按照向导输入公司名字、项目名字后,网站就会给出一个apiKey。
  2. 项目NuGet安装Serilog的Exceptionless插件:Serilog.Sinks.Exceptionless。
  3. 在程序的最开始加上一句ExceptionlessClient.Default.Startup("拿到的apiKey"),然后Serilog的配置中加上一句:.WriteTo.Exceptionless()

总结

  1. 普通项目用NLog输出到文本文件即可,根据需要设定过滤、分类规则。
  2. 集群部署的项目用Serilog+“集中式日志服务”。如果需要记录结构化日志,再进行结构化输出。
  3. 如果用云服务的就够了,就用云服务的,免得自己部署;如果想自己控制日志数据就用自部署Exceptionless或者ELK(难度大)等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/504128.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI CEO 奥特曼发长文《反思》

OpenAI CEO 奥特曼发长文《反思》 --- 引言&#xff1a;从 ChatGPT 到 AGI 的探索 ChatGPT 诞生仅一个多月&#xff0c;如今我们已经过渡到可以进行复杂推理的下一代模型。新年让人们陷入反思&#xff0c;我想分享一些个人想法&#xff0c;谈谈它迄今为止的发展&#xff0c;…

Agentic RAG 解释

RAG&#xff08;检索增强生成&#xff09;通过提供来自外部知识源的相关背景来帮助提高 LLM 答案的准确性和可靠性。 Agentic RAG 是高级 RAG 版本&#xff0c;它使用 AI 代理来更加自主地行动。 Agentic RAG 执行以下操作 查询理解、分解和重写检索策略选择知识库管理结果综…

pg数据库运维经验2024

这篇文章主要是讲pg运维常见问题&#xff0c;两三年见一次的疑难杂症就不说了。 主要是技术性运维总结&#xff0c;主打通俗易懂和快速上手&#xff0c;尽量避免源码层面等深入分析。 SQL性能与执行计划 执行计划突变 pg官方不支持hint功能&#xff0c;并且计划永远不支持&…

每日一题-两个链表的第一个公共结点

文章目录 两个链表的第一个公共结点问题描述示例说明示例 1示例 2 方法及实现方法描述代码实现 复杂度分析示例运行过程示例 1示例 2 总结备注 两个链表的第一个公共结点 问题描述 给定两个无环的单向链表&#xff0c;找到它们的第一个公共节点。如果没有公共节点&#xff0c…

生成模型:变分自编码器-VAE

1.基本概念 1.1 概率 这里有&#xff1a; x为真实图像&#xff0c;开源为数据集, 编码器将其编码为分布参数 x ^ \hat{x} x^为生成图像, 通过解码器获得 p ( x ) ^ \hat{p(x)} p(x)^​: 观测数据的分布, 即数据集所构成的经验分布 p r e a l ( x ) p_{real}(x) preal​(x): …

攻防世界 wtf.sh-150

点进去&#xff0c;发现是一个类似于论坛的网站&#xff0c;并且对报错等做了处理 用御剑扫描一下 ​ 发现是php形式的文件&#xff0c;但点进去访问不了。看看wp&#xff0c;发现此题存在路径穿越漏洞&#xff0c;就是&#xff08;如果应用程序使用用户可控制的数据&#xff0…

Google Play开发者账号的高风险行为解析

在安卓应用开发行业里&#xff0c;Google Play 开发者账号是开发者们通向全球用户的重要桥梁。凭借它&#xff0c;开发者们能够将精心打造的应用推向市场&#xff0c;然而&#xff0c;开发者账号的使用也包含了诸多风险&#xff0c;一些不经意的操作可能会给开发者账号带来封禁…

网络安全-web应用程序发展历程(基础篇)

1.网站程序发展 web1.0 网站是别人的&#xff0c;只能是随便看看 web2.0网站是朋友的&#xff0c;可以进行交流了 web3.0网站是自己的&#xff0c;可以实现买卖交流。 静态内容阶段&#xff1a;web由大量的静态文档构成&#xff0c;web被看作成超文本共享文件服务器。别人只…

继承(6)

大家好&#xff0c;今天我们来继续学习继承的内容&#xff0c;了解一下this和super两者的一些特性和区别。话不多说&#xff0c;来看。 1.7 super 和 this super和 this都可以在成员方法中用来访问:成员变量和调用其他的成员函数,都可以作为构造方法的第一条语句,那他们之间有…

[离线数仓] 总结二、Hive数仓分层开发

接 [离线数仓] 总结一、数据采集 5.8 数仓开发之ODS层 ODS层的设计要点如下: (1)ODS层的表结构设计依托于从业务系统同步过来的数据结构。 (2)ODS层要保存全部历史数据,故其压缩格式应选择压缩比率,较高的,此处选择gzip。 CompressedStorage - Apache Hive - Apac…

3D机器视觉的类型、应用和未来趋势

3D相机正在推动机器视觉市场的增长。很多制造企业开始转向自动化3D料箱拣选&#xff0c;专注于使用3D视觉和人工智能等先进技术来简化操作并减少开支。 预计3D相机将在未来五年内推动全球机器视觉市场&#xff0c;这得益于移动机器人和机器人拣选的强劲增长。到 2028 年&#…

Mac-docker配置

1.配置的文件路径 cd ~/.docker (base) zhangyaweimacbookair .docker % ls buildx cli-plugins config.json contexts daemon.json desktop-build mutagen run (base) zhangyaweimacbookair .docker % cat daemon.json## 重启docker服务 sudo systemctl daemon-reload sudo…

SSM-SpringMVC-请求响应、REST、JSON

目录 “为什么要学 SpringMVC&#xff1f;它和 Servlet 是什么关系&#xff1f;” “什么是异步&#xff1f;为什么异步交互中常用 JSON 格式&#xff1f;异步请求和 JSON 如何配合&#xff1f;” 一、概述 SpringMVC主要负责 1 SpringMVC的常用组件 2 SpringMVC的工作流程…

【Arm】Arm 处理器的半主机(semihosting)机制

概览 通过 semihosting 机制&#xff0c;主机可以通过调试器使用目标计算机 IO 接口。 例如开发者的 PC 通过 J-Link 来使用 STM32 MCU 的输入输出。 这些功能的示例包括键盘输入、屏幕输出和硬盘 I/O。例如&#xff0c;可以使用此机制启用 C Library 中的函数&#xff0c;如…

网络安全-XSS跨站脚本攻击(基础篇)

漏洞扫描的原理 1.跨站脚本攻击介绍 xss跨站脚本攻击&#xff1a; xSS 全称&#xff08;Cross site Scripting &#xff09;跨站脚本攻击&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&#xff0c;XSS是指攻…

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结&#xff1a;不同…

n 维数组(张量)关于轴 axis 的理解

本文将从两个角度来理解 “轴” 的概念&#xff0c;着重阐述 1.2 节中的理解&#xff0c;并借此加深问题一和问题二的理解。 一、问题&#xff1a;如何理解 numpy 数组在轴上的 sum 操作 二、问题&#xff1a;torch 张量中的维度 dim 也是如此 一、问题&#xff1a;如何理解 n…

Vscode辅助编码AI神器continue插件

案例效果 1、安装或者更新vscode 有些版本的vscode不支持continue,最好更新到最新版,也可以直接官网下载 https://code.visualstudio.com/Download 2、安装continue插件 搜索continue,还未安装的,右下脚有个Install,点击安装即可 <

操作手册:集成钉钉审批实例消息监听配置

此文档将记录在慧集通平台怎么实现钉钉审批实例结束或发起或取消时&#xff0c;能够实时的将对应的实例数据抓取出来送入第三方系统 集成平台配置 1、配置中心库&#xff0c;存储钉钉发送的消息&#xff0c;可以忽略&#xff0c;若不配置&#xff0c;则钉钉的消息将不再记录到…

mysql -> 达梦数据迁移(mbp大小写问题兼容)

安装 注意后面初始化需要忽略大小写 初始化程序启动路径 F:\dmdbms\tool dbca.exe 创建表空间&#xff0c;用户&#xff0c;模式 管理工具启动路径 F:\dmdbms\tool manager.exe 创建表空间 创建用户 创建同名模式&#xff0c;指定模式拥有者TEST dts 工具数据迁移 mysql -&g…