• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

.net core 使用阿里云分布式日志的配置方法

asp 搞代码 4年前 (2022-01-03) 70次浏览 已收录 0个评论
文章目录[隐藏]

本文给大家分享.net core 使用阿里云分布式日志的实现代码,简单查询阿里云日志的工具使用,通过实例代码介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

好久没有出来夸白了,今天教大家简单的使用阿里云分布式日志,来存储日志,没有阿里云账号的,可以免费注册一个

开通阿里云分布式日志(有一定的免费额度,个人测试学习完全没问题的,香)

阿里云日志地址:https://sls.console.aliyun.com/lognext/profile

先开通阿里云日志,这个比较简单授权就可以了

选择接入数据,我们这里选 .NET

选择项目名称,没有项目的可以去创建一个,项目名称后面会用到,如果你有购买阿里云ECS,项目区域最好选择跟ECS同一个区域(每个区域的地址不一样,同一个区域可以选择内网通讯,速度更快),如果没有,就随便选个区域,我这里选择的是杭州

选择日志库,没有就创建一个

数据源配置,这个先不用管,后面有教程

设置分析配置,例如我这里设置了两个,可以根据业务需求来,没有特殊要求不用设置

开通完成,可以正常看到仪盘表

设置密钥

通过SDK 写入日志

阿里云有提供对应的SDK(阿里云 .NET SDK的质量大家都懂),它主要是通过构造一个静态对象来提供访问的,地址: https://github.com/aliyun/aliyun-log-dotnetcore-sdk

阿里云代码

 LogServiceClientBuilders.HttpBuilder .Endpoint("", "") .Credential("", "") .Build();

阿里云提供的依赖注入代码(autofac),很遗憾按照这个方式,并没有获取到对象

 using Aliyun.Api.LogService; using Autofac; namespace Examples.DependencyInjection { public static class AutofacExample { public static void Register(ContainerBuilder containerBuilder) { containerBuilder .Register(context => LogServiceClientBuilders.HttpBuilder // 服务入口及项目名 .Endpoint("", "") // 访问密钥信息 .Credential("", "") .Build()) // `ILogServiceClient`所有成员是线程安全的,建议使用Singleton模式。 .SingleInstance(); } } }

中间个有小插曲,由于公司使用阿里云日志比较早,也非常稳定,替换成我申请的阿里云日志的配置,发送日志一直报错,找了半天没找到原因,提了工单,原来阿里云使用了新的SDK

重新封装阿里云日志SDK(Aliyun.Log.Core) https://github.com/wmowm/Aliyun.Log.Core问了下群友,刚好有大佬重写过向阿里云提交日志这块,一番py交易,代码块到手,主要是数据组装,加密,发送,发送部分的代码基于http的protobuf服务实现,这里直接从阿里云开源的SDK里拷贝过来,开始重新封装,主要实现以下功能

  • 实现.net core DI
  • 加入队列,让日志先入列,再提交到阿里云,提高系统吞吐量
  • 对日志模型进行封装,满足基础业务需求

代码如下

添加ServiceCollection 拓展,定义一个阿里云日志的配置信息委托,然后将需要注入的服务注册进去即可

 public static AliyunLogBuilder AddAliyunLog(this IServiceCollection services, Action setupAction) { if (setupAction == null) { throw new ArgumentNullException(nameof(setupAction)); } //var options = new AliyunSLSOptions(); //setupAction(options); services.Configure(setupAction); services.AddHttpClient(); services.AddSingleton(); services.AddSingleton(); services.AddHostedService(); return new AliyunLogBuilder(services); }

加入队列比较简单,定义一个队列,使用HostedService 消费队列

 /// <summary> /// 写日志 /// </summary> ///  ///  public async Task Log(LogModel log) { AliyunLogBuilder.logQueue.Enqueue(log); }
 /// 

/// 消费队列 ///

Task.Run(async () => { us来源gao@daima#com搞(%代@#码网ing (var serviceScope = _provider.GetService().CreateScope()) { var _options = serviceScope.ServiceProvider.GetRequiredService(); var _client = serviceScope.ServiceProvider.GetRequiredService(); while (true) { try { if (AliyunLogBuilder.logQueue.Count>0) { var log = AliyunLogBuilder.logQueue.Dequeue(); var logInfo = new LogInfo { Contents = { {"Topic", log.Topic.ToString()}, {"OrderNo", log.OrderNo}, {"ClassName", log.ClassName}, { "Desc",log.D

以上就是.net core 使用阿里云分布式日志的配置方法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:.net core 使用阿里云分布式日志的配置方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址