Я использую AWS Cloudwatch для хранения данных журналов.Данные хранятся в каждом событии в LogStream.Сохраненные данные имеют другой формат Json , и, скажем, мы не можем разбить их на несколько LogStream или LogGroup.На основании этой документации AWS SDK я могу использовать следующие методы (для .Net Core) для сбора данных:
- FilterLogEventsAsync (FilterLogEventsRequest, CancellationToken)
- GetLogEventsAsync (GetLogEventsRequest, CancellationToken)
Если я использую FilterLogEventAsync , тогда я могу использовать шаблон фильтра и получить определенный формат журналов.Но ответ упорядочен по дате, и мне нужно отобразить данные, упорядоченные по запросу.На самом деле, если я смогу получить все данные из этого метода, это будет совершенством.Но есть ограничение.Оба метода могут передавать 1 МБ только для каждого запроса, и у меня есть большие данные.Итак, мне нужно сделать цикл, чтобы получить все данные.
Если я использую GetLogEventsAsync , тогда я могу получить все события из logStream.Я могу установить данные ответа, упорядоченные по asc или desc.Но мне нужно отфильтровать все события самостоятельно.
Например: у меня есть 10 данных, которые сохранены в logStream
event 1 -> {event.datetime : "18 March 2019", event.message : <jsonFormat1>} -> 256KB
event 2 -> {event.datetime : "18 March 2019", event.message : <jsonFormat2>} -> 100KB
event 3 -> {event.datetime : "19 March 2019", event.message : <jsonFormat1>} -> 256KB
event 4 -> {event.datetime : "19 March 2019", event.message : <jsonFormat2>} -> 100KB
event 5 -> {event.datetime : "20 March 2019", event.message : <jsonFormat1>} -> 256KB
event 6 -> {event.datetime : "20 March 2019", event.message : <jsonFormat2>} -> 100KB
event 7 -> {event.datetime : "21 March 2019", event.message : <jsonFormat1>} -> 256KB
event 8 -> {event.datetime : "21 March 2019", event.message : <jsonFormat2>} -> 100KB
event 9 -> {event.datetime : "21 March 2019", event.message : <jsonFormat1>} -> 256KB
event 10 -> {event.datetime : "21 March 2019", event.message : <jsonFormat2>} -> 100KB
На основании данных выше, если я хочу получить данные с помощью jsonFormat1 use FilterLogEventAsync .Я могу использовать filterpattern, чтобы получить jsonFormat1 .Но я могу получить только 4 события (1,3,5,7), и у меня есть следующий токен.Итак, мне нужно сделать цикл метода со следующим данным токеном.После получения всех данных я могу заказать их по деск.
Если я хочу получить данные с помощью jsonFormat1 , используйте GetLogEventsAsync .Мне нужно сделать цикл метода со следующим данным токеном, то есть я получу все события (10,9,8,7,6,5,4,3,2,1).Затем мне нужно отфильтровать данные с помощью jsonFormat1 самостоятельно.К счастью, по умолчанию данные ответов уже упорядочены по desc.
Данные десериализуются в объект FirstLogs .
Public static class FirstLogs {
public string BranchId { get; set; }
public string BranchAddress { get; set; }
public string BranchName { get; set; }
public List<Item> Items { get; set; }
}
Public static class Item {
public string ItemId { get; set; }
public string ItemName { get; set; }
public string TotalItems { get; set; }
}
Если я использую FilterLogEventAsync , я могу добавить BranchId , BranchName или BranchAddress в filterpattern .Итак, мне не нужно фильтровать это снова.Но мне нужно собрать все данные, затем я могу заказать их по desc.
Если я использую GetLogEventsAsync , я могу использовать Limit из запроса, потому что данные ответа уже упорядочены по desc.Итак, это значит, что мне не нужно получать все данные.Но мне нужно отфильтровать BranchId , BranchName или BranchAddress .
Итак, я думаю, для небольших данных, FilterLogEventAsync лучше.Но для больших данных я не знаю, какой из них лучше.Пожалуйста, дайте мне несколько советов.
Какой метод лучше?
или
Совет по другим методам