gpt4 book ai didi

c# - 如何在 ASP.Net Web API 中摄取大量日志

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:08 25 4
gpt4 key购买 nike

我是 API 开发的新手,我想创建一个将接收大量日志数据的 Web API 端点。我想通过 Amazon Kinesis 传输流将该数据发送到 Amazon s3 存储桶。下面是一个运行良好的示例应用程序,但我不知道如何摄取大量入站数据以及我的 API 应该以什么格式接收数据?我的 API 端点应该是什么样子。

 [HttpPost]
public async void Post() // HOW to allow it to receive large chunk of data?
{
await WriteToStream();
}

private async Task WriteToStream()
{
const string myStreamName = "test";
Console.Error.WriteLine("Putting records in stream : " + myStreamName);
// Write 10 UTF-8 encoded records to the stream.
for (int j = 0; j < 10000; ++j)
{
// I AM HARDCODING DATA HERE FROM THE LOOP COUNTER!!!
byte[] dataAsBytes = Encoding.UTF8.GetBytes("testdata-" + j);
using (MemoryStream memoryStream = new MemoryStream(dataAsBytes))
{
PutRecordRequest putRecord = new PutRecordRequest();
putRecord.DeliveryStreamName = myStreamName;
Record record = new Record();
record.Data = memoryStream;
putRecord.Record = record;
await kinesisClient.PutRecordAsync(putRecord);
}
}
}

P.S:在现实世界的应用程序中,我不会有那个 for 循环。我希望我的 API 摄取大数据,我的 API 的定义应该是什么?我是否需要使用名为multiform/datafile 的东西?请指导我。

最佳答案

这是我的思考过程。当您公开用于日志记录的 API 时,您的输入应包含以下属性

  • 日志级别(信息、调试、警告、致命)
  • 日志消息(字符串)
  • 申请编号
  • 应用程序实例 ID
  • 应用IP
  • 主机(记录错误的机器)
  • 用户 ID(发生错误的用户)
  • Utc 时间戳(错误发生的时间)
  • 附加数据(可自定义为 xml/json)

我建议通过 Gateway API 将 API 公开为 AWS lambda,因为它有助于在负载增加时进行扩展。

要了解如何构建 API 和使用模型绑定(bind),您可以引用 https://learn.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api

关于c# - 如何在 ASP.Net Web API 中摄取大量日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54642926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com