为什么是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 存储桶中,对日志进行生命周期管理等,满足日志审计需求。
具体内容可查看日志服务产品文档

使用腾讯云日志服务


在日志集管理里面我们可以创建我们自己的日志集,可以自定义日志保存时间。
同时新建一个日志主题,这里我们是属于日志投递的功能,所以我们不需要开启LogListener。

新建日志主题之后若我们需要使用日志服务的检索功能的话,需要手动打开,不然是无法检索到已经投递的日志的喔~在日志主题里面的索引配置里面打开开关保存即可。

好了,日志主题新建完了,接下来我们要如何把日志投递到腾讯云呢。

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

问题来了,serilog的sink里面并没有tencentCloud的库,怎么办呢,那我们来造一个轮子吧。
在产品的API文档我们可以看到有这个上传结构化日志的接口

我们可以通过http请求讲日志上传到腾讯云,在github上面serilog的众多sink中,有一个serilog.sink.http的库,是使用http请求推送日志的,我们down下来参考一下修改修改。
然后我就搞了个Serilog.Sinks.TencentCloud(/ω\)

使用方式也很简单(/ω\)github上面readme上面有一个很简陋的说明。

然后呢,引用这个库,我们在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>();

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

检索日志集

打开腾讯云日志服务,选择日志集点击检索,前提得已经打开索引配置喔。
我们可以看到已经把结构化的日志信息全都投递到日志服务了,

输入关键字可以进行全文搜索我们想要的日志,比如我搜索warning,和exception,即可检索出warning级别和exception的日志信息

搞完

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

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

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

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

  1. 软件_搭建rtmp视频推送环境,腾讯云,ubuntu16

    原创博客地址:软件_搭建rtmp视频推送环境,腾讯云,ubuntu16 1,安装conda,ffmpeg,nginx,nginx-rtmp-module (建议先修改主机pip,conda的源) 安装 ...

  2. ASP.NET Core 使用SignalR后台实时推送数据给Echarts展示图表

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  3. ASP.NET Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...

  4. git推送项目到码云(gitee)

    git推送项目到码云(gitee) git推送项目到码云(gitee) 创建账号 创建一个Gitee账号,我使用的是Gitee因为国内速度快~ 本地安装Git 前往 Git 根据操作系统下载Git到本 ...

  5. 快速集成推送通知功能---百度云推送

    发现百度云推送简直太好集成了,一下午时间都用不上就搞定了 先看效果吧 发送通知 接收通知 接下来就是步骤了 1.先去百度云推送开发者平台注册账号 http://push.baidu.com/ 然后创建 ...

  6. ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理

    ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...

  7. php怎么把日志推送过去_实践 | 基于Flink的用户行为日志分析系统

    用户行为日志分析是实时数据处理很常见的一个应用场景,比如常见的PV.UV统计.本文将基于Flink从0到1构建一个用户行为日志分析系统,包括架构设计与代码实现.本文分享将完整呈现日志分析系统的数据处理 ...

  8. 在 Asp.NET MVC 中使用 SignalR 实现推送功能

    一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送 ...

  9. 《ASP.NET Core项目开发实战入门》送书活动结果公布

    截至2020.09.20 本次送书活动<ASP.NET Core项目开发实战入门>.下面把Top 5的留言截图给大家回顾一下. 以下5位同学将获赠书籍一本: 小林子 鉴 静 红脸先生 阿星 ...

最新文章

  1. MIT用19个神经元实现自动驾驶控制,灵感来自秀丽隐杆线虫
  2. CSS中控制不换行属性
  3. Cube 技术解读 | 支付宝新一代动态化技术架构与选型综述
  4. linux查看进程占用pcu,Linux运维:如何使用ss代替netstat命令
  5. rsync + inotify
  6. 怎么样实现左侧页面点击后右边页面显示内容
  7. deprecated_使用Java的@Deprecated前瞻
  8. 解决虚拟机时间引起的奇怪问题
  9. Linux下配置MySQL免安装版
  10. 零拷贝的基本原理及使用Java通过零拷贝实现数据传输
  11. 在线发送免费传真(五个网上免费发传真网站介绍)
  12. SQLServer2012服务无法启动Windows不能在本地计算机启动SQLServer(SQLEXPRESS)
  13. python爬虫--代理的使用
  14. DQL 数据查询语⾔
  15. 阿伯丁大学计算机科学硕士申请,又双叒有更多硕士专业可以一月入学了 | 阿伯丁大学2021年春季入学专业名单更新(2020年8月更新)...
  16. 转:7招,教你在工作中高效做笔记
  17. 用计算机绘制函数图像ppt,如何利用描点画函数图像课件制作
  18. python:shape和reshape函数基本讲解
  19. 4. 频域处理(上)
  20. Muduo 处理Tcp粘包

热门文章

  1. Mac OS X必备APP推荐之二
  2. 如何在iPhone和iPad上允许“不受信任的快捷方式”
  3. 因特网使用期限_Internet死亡时使用PC的其他方式
  4. Angular 4.x 事件管理器及自定义EventManagerPlugin
  5. 转: javascript技术栈
  6. C#中的多线程 - 并行编程 z
  7. 实验四 图的遍历算法设计与实现
  8. 封装log4cp p
  9. Linux重定向详解
  10. 使用ClickOnce部署VS2005中的WinForm应用程序.(ZT)