本文介绍如何快速使用日志服务 .NET SDK 实现基础的日志采集流程,包括创建日志项目、创建日志主题、写入日志和查询日志等操作。
VOLCENGINE_ACCESS_KEY_ID 等环境变量。环境变量的配置方式请参考配置身份认证信息。初始化 Client 实例之后,才可以向 TLS 服务发送请求。初始化时推荐通过环境变量动态获取火山引擎密钥等身份认证信息,以免 AccessKey 硬编码引发数据安全风险。
初始化代码如下:
VOLCENGINE_ACCESS_KEY_ID="your accessKeyId" VOLCENGINE_ACCESS_KEY_SECRET="your secretKey" VOLCENGINE_ENDPOINT="your host" VOLCENGINE_REGION="your region"
如下示例代码介绍如何设置火山云权限配置、启动消费者、发送单条/多条消息、模拟任务处理等信息。
详细示例代码如下:
using System; using System.Threading; using VolcengineTls.Producer; namespace VolcengineTls.Examples { public class DefaultCallBackImp : ICallBack { public void Fail(ProducerResult result) { Console.WriteLine("put log to tls failed"); } public void Success(ProducerResult result) { Console.WriteLine("put log to tls success"); } } public class ProducerExample { public void Run() { // 设置火山云权限配置 var vc = new VolcengineConfig( region: Environment.GetEnvironmentVariable("VOLCENGINE_REGION"), endpoint: Environment.GetEnvironmentVariable("VOLCENGINE_ENDPOINT"), accessKeyId: Environment.GetEnvironmentVariable("VOLCENGINE_ACCESS_KEY_ID"), accessKeySecret: Environment.GetEnvironmentVariable("VOLCENGINE_ACCESS_KEY_SECRET"), securityToken: Environment.GetEnvironmentVariable("VOLCENGINE_SECURITY_TOKEN") ); // 设置火山云配置,当前获取默认配置 var config = new ProducerConfig(vc); // 实例化 var producer = new ProducerImp(config); // 启动消费者 producer.Start(); /// 发送单条 // 构造日志 var keyNum = 2; var log = new Pb.Log { Time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), }; for (var i = 0; i < keyNum; i++) { var logContent = new Pb.LogContent { Key = $"key{i}", Value = $"c#-value-test-{i}", }; log.Contents.Add(logContent); } // 发送单条 或者使用SendLogV2 producer.SendLog( topicId: Environment.GetEnvironmentVariable("TOPIC_ID"), log: log, source: "your log source", filename: "your log filename", shardHash: null, callback: new DefaultCallBackImp() // 不需要的话可以传null ); /// 发送多条 var logNum = 1000; var logGroup = new Pb.LogGroup(); for (var j = 0; j < logNum; j++) { log = new Pb.Log { Time = DateTimeOffset.Now.ToUnixTimeSeconds(), }; for (var i = 0; i < keyNum; i++) { var logContent = new Pb.LogContent { Key = $"no-{j}-key{i}", Value = $"no-{j}-c#-value-test-{i}", }; log.Contents.Add(logContent); } logGroup.Logs.Add(log); } producer.SendLogs( topicId: Environment.GetEnvironmentVariable("TOPIC_ID"), logs: logGroup, source: "your log source", filename: "your log filename", shardHash: null, callback: new DefaultCallBackImp() // 不需要可以传null ); // 模拟其他任务处理 Thread.Sleep(TimeSpan.FromSeconds(20)); // 生产者关闭 producer.Close(); } } }