asp.net core使用serilog将日志推送到腾讯云日志服务

为什么是serilog?

Serilog是 .NET 中最著名的结构化日志类库。
基于日志事件log events,而不是日志消息log message。
你可以将日志事件格式化为控制台的可读文本或者可以将相同的事件格式化为JSON并将其发送到远程日志服务器。
应用程序中的日志语句会创建LogEvent对象,而连接到管道的接收器[sinks]会知道如何记录它们。
这里有一篇文章比较了.NET目前三种最常用的日志组件,有兴趣可以去看看。
nlog-vs-log4net-vs-serilog-comparing-net-logging

为什么是腾讯云日志服务?

最普通的日志记录大概是直接把日志写入本地文件进行记录,但是在容器化,上云的时代,把日志记录在云端才是更好的方式。
Serilog有很多sink可以将日志记录推送到不同的地方存储。最常见的有Elasticsearch,结合kibana展示日志数据,但是通常需要我们额外搭建Elasticsearch服务和kibana服务。
腾讯云有一个日志服务,可以给我们提供存储和索引功能,基本可以满足我们日常的需要还不需要额外搭建服务。
日志服务主要提供以下功能:
日志采集:通过 LogListener、API 等方式从不同日志采集端采集日志至日志服务。
日志存储:使用日志服务存储日志数据。
日志索引:开启日志索引对日志进行查询,可帮助用户快速定位日志问题。
日志投递:用户可以将指定日志投递至其他云产品中,满足存储或其他计算需求。如指定的 COS 存储桶中,对日志进行生命周期管理等,满足日志审计需求。
具体内容可查看日志服务产品文档

使用腾讯云日志服务

640?wx_fmt=png
在日志集管理里面我们可以创建我们自己的日志集,可以自定义日志保存时间。
同时新建一个日志主题,这里我们是属于日志投递的功能,所以我们不需要开启LogListener。
640?wx_fmt=png
新建日志主题之后若我们需要使用日志服务的检索功能的话,需要手动打开,不然是无法检索到已经投递的日志的喔~在日志主题里面的索引配置里面打开开关保存即可。
640?wx_fmt=png
好了,日志主题新建完了,接下来我们要如何把日志投递到腾讯云呢。

将日志投递到腾讯云日志服务

问题来了,serilog的sink里面并没有tencentCloud的库,怎么办呢,那我们来造一个轮子吧。
在产品的API文档我们可以看到有这个上传结构化日志的接口
640?wx_fmt=png
我们可以通过http请求讲日志上传到腾讯云,在github上面serilog的众多sink中,有一个serilog.sink.http的库,是使用http请求推送日志的,我们down下来参考一下修改修改。
然后我就搞了个Serilog.Sinks.TencentCloud(/ω\)
640?wx_fmt=png
使用方式也很简单(/ω\)github上面readme上面有一个很简陋的说明。
640?wx_fmt=png

然后呢,引用这个库,我们在asp.net core里面把这个扩展加入serilog,最简单的方法如下:
在入口main()函数中加入下面代码。

或者在IWebHostBuilder的UseSeriLog()中进行配置:

Copy

public static IWebHost BuildWebHostInternal(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.ConfigureAppConfiguration((context, configuration) =>
{
configuration.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", true, true)
.AddEnvironmentVariables();
})
.UseSerilog((context, logger) =>
{
logger.Enrich.FromLogContext()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.WriteTo.TencentCloud("ap-guangzhou.cls.myqcloud.com", "", "", "", restrictedToMinimumLevel: LogEventLevel.Debug)
;
}
)
.Build();

也可以通过配置文件进行配置,需要引用Serilog.Settings.Configuration这个扩展包,然后再配置文件中加如如下配置

Copy

"Serilog": {
"Using": [ "Serilog.Sinks.TencentCloud" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "TencentCloud",
"Args": {
"requestBaseUri": "ap-guangzhou.cls.myqcloud.com",
"topicId": "",
"secretId": "",
"secretKey": ""
}
}
]
},

然后在IWebHostBuilder的UseSeriLog()中进行配置:

Copy

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, configuration) =>
{
configuration.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{context.HostingEnvironment.EnvironmentName}.json", true, true)
.AddEnvironmentVariables();
})
.UseSerilog((context, logger) =>
{
logger.ReadFrom.Configuration(context.Configuration);
})
.UseStartup<Startup>();

配置完成后启动应用程序日志就会自动记录并推送到腾讯云日志服务了。

检索日志集

打开腾讯云日志服务,选择日志集点击检索,前提得已经打开索引配置喔。
我们可以看到已经把结构化的日志信息全都投递到日志服务了,
640?wx_fmt=png
输入关键字可以进行全文搜索我们想要的日志,比如我搜索warning,和exception,即可检索出warning级别和exception的日志信息
640?wx_fmt=png
640?wx_fmt=png

搞完

这样就成功使用serilog将日志推送到腾讯云日志服务啦(/ω\)
Serilog.Sinks.TencentCloud https://github.com/NanoFabricFX/Serilog.Sinks.TencentCloud 这个库的地址在这,欢迎大家帮忙改进哈~~
大佬们看了有什么建议欢迎评论提出

 

640?wx_fmt=jpeg

原文地址:https://www.cnblogs.com/fanshaoO/p/11023271.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 
640?wx_fmt=jpeg

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

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

相关文章

P5787 二分图 /【模板】线段树分治

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 线段树分治就是在线段树上进行遍历&#xff0c;到每个点都加上它对子节点的贡献&#xff0c;最后到叶子节点的时候算一下贡献。 对于这个题先考虑维护二分图的话&#xff0c;可以用扩展域并…

CF1413F. Roads and Ramen(树的直径,线段树)

CF1413F. Roads and Ramen Solution 感觉这个套路也见过许多次了&#xff1f;大概这种奇奇怪怪的树上最长路径的题都得往直径靠一靠。 大概有个结论是&#xff1a;存在一个最优路径使得其起始点和直径起始点有交。 然后我们只需要求出一个直径的起始点A,BA,BA,B&#xff0c…

微软发布 VS Code Java 安装程序,一键安装所有 Java 开发环境

北京时间 2019 年 6 月 14 日 &#xff0c;微软发布了 VS Code Java 安装程序&#xff0c;方便开发者能一键安装所有 Java 开发环境。几乎是在三年前&#xff0c;在微软苏黎世办公室的编程马拉松中&#xff0c;来自 Red Hat&#xff0c;IBM&#xff0c;Codenvy 和 Microsoft 的…

CF1361C. Johnny and Megan‘s Necklace(构造,欧拉回路,传递闭包)

CF1361C. Johnny and Megan’s Necklace Solution 真duliu&#xff0c;快做吐了。。。 刚开始想了一个假做法&#xff08;但前面还是很真的&#xff09;。 假的做法大概是你发现这个东西具有传递性&#xff0c;因此你考虑把aia_iai​翻转后在后面补0直到20位之后&#xff0…

Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) 思维 + 质因子

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 大体题意跟easyeasyeasy版本差不多&#xff0c;就是hardhardhard版本的aaa范围更大。见这里Codeforces Round #601 (Div. 2) 思路&#xff1a; 首先还是考虑质因子分解&#xff0c;因为一个数被分成以xyxy…

[译]C#中的条件断点

这只是你们许多人中可能使用的一个简单技巧。这是一个小但非常强大的技巧&#xff0c;在你调试大型代码库时尤其有用。这是条件断点的概念。正如名称本身所暗示的那样&#xff0c;只有在满足某个条件时才会设置被击中的断点。它也很容易实现。创建一个新的应用程序并设置一个普…

CF1090F - How to Learn You Score(构造)

CF1090F - How to Learn You Score Solution 很不戳的构造题。 首先观察数据范围&#xff1a;n∈[5,1000]n\in[5,1000]n∈[5,1000]&#xff0c;这启发我们什么&#xff1f;n5n5n5的时候解是唯一的&#xff0c;因此我们可以把nnn切成若干段长度为555的段&#xff0c;每一段分…

前菜---二叉树+堆的小练习

目录 前言&#x1f3dc;️ 1. 二叉树性质总结⛱️ 1.2 性质3⏰ 2. 二叉树性质小练习&#x1f3d5;️ 3. 答案解析&#x1f4a1; 4. 堆概念结构小练习&#x1fa94; 5. 答案解析&#x1f9ff; 6. 前/中/后/层序遍历小练习&#x1f52b; 7. 答案解析&#x1f9fa; 后语…

牛客 CCA的区间 dp + 补集转移

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 首先翻转一个区间意味着可以将任意两段不相交的区间组合&#xff0c;所以问题变成了选两端不相交的区间&#xff0c;使得合并后区间和最大。那么我们就处理出来区间&#xff0c;让后进行转…

ASP.NET Core IP 请求频率限制

在网站或API应用中&#xff0c;我们为了防止无聊人士或恶意攻击&#xff0c;通常希望屏蔽某一IP短时间的内高频率请求。在ASP.NET Core中&#xff0c;限制IP请求频率非常简单&#xff0c;我们来看看吧。轮子一个.NET Core 目前的生态发展十分迅猛&#xff0c;轮子也越来越多。只…

2019 秦皇岛 I - Invoker Gym - 102361I dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 累了&#xff0c;略。 思路&#xff1a; 将这101010个串打乱顺序&#xff0c;每个串最多有666种情况&#xff0c;全部写出来&#xff0c;让后连边。最后直接在转移的时候分别从上一个字符的666个状态转移就…

CF1016G. Appropriate Team(Pollard-pho,FWT,数论)

CF1016G. Appropriate Team Solution 相当于选出的两个数需要满足不存在一个质因子ppp&#xff0c;aia_iai​在ppp的指数比XXX多&#xff0c;aja_jaj​在ppp的指数比YYY少。 我们用Pollard−phoPollard-phoPollard−pho求出YYY所有最多151515个质因数&#xff0c;然后把所有…

Exceptionless - .Net Core开源日志框架

作者&#xff1a;markjiang7m2原文地址&#xff1a;https://www.cnblogs.com/markjiang7m2/p/11020140.html官网地址&#xff1a;http://letyouknow.net今天要给大家介绍的Exceptionless是一个基于 .net core的开源日志框架&#xff0c;Exceptionless的意思是&#xff1a;没有异…

CF981E Addition on Segments 线段树分治 + bitset优化

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 我们考虑如果我们选择的区间都包含某个位置&#xff0c;那么这个位置一定是最大值。那么对于每个位置&#xff0c;我们枚举包含其的区间&#xff0c;让后每次加xxx都用bitsetbitsetbitset来…

CF1146F - Leaf Partition(树形dp)

CF1146F - Leaf Partition Solution 感觉做这种细节很多的分类讨论树形dp还是有点乱。 大概有一个naivenaivenaive的想法是&#xff0c;我们令fx,0/1f_{x,0/1}fx,0/1​表示以xxx为根的子树&#xff0c;xxx结点有没有颜色的方案数。 然后如果存在两个有颜色的儿子&#xff0…

开源基于Canal的开源增量数据订阅消费中间件

canal 是阿里巴巴开源的一款基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。我开发的这个CanalSync项目 https://github.com/yuzd/CanalSync >觉得不错帮忙给个star谢谢是基于canal-server之上的数据库同步&消费中间件&#…

E2. Square-free division (hard version) dp + 质因子分解

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 给你长度为nnn的数组&#xff0c;让后最多修改其中kkk个数(可以修改为任意数)&#xff0c;让后问你分成的最少组是多少。这个组内元素是连续的且不存在任意两个数的积为平方数。 思路&#xff1a; 首先两个…

CF1000G. Two-Paths(树形dp)

CF1000G. Two-Paths Solution 我们发现除了树上(x,y)(x,y)(x,y)最短路径上的边经过一次&#xff0c;其余边要么走000次&#xff0c;要么走222次。 因此考虑先假设每条边走两次&#xff0c;最后把走一次的边的贡献加上。 我们把从(x,y)(x,y)(x,y)路径上的点扩展出去连痛块的…

不装 VS 自己编译安装 Windows Terminal

Windows Terminal 一直没有发布可以直接安装的二进制文件&#xff0c;想自行编译的时候&#xff0c;看到系统需求中包含体积巨大的 Visual Studio 和 Windows SDK&#xff0c;脑袋都大了。直接下载其他人编译好的安装包又不放心&#xff0c;那么就想个办法避免在本地环境编译吧…

Codeforces Round #604 (Div. 2) E. Beautiful Mirrors 期望dp

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 要从111走到nnn&#xff0c;每次成功走下去的概率为pi100\frac{p_i}{100}100pi​​&#xff0c;如果不成功那就回到111号点继续走。问走完nnn个点的期望是多少。 思路&#xff1a; 以前见过这种失败了就回…