putLogEvents method

Future<PutLogEventsResponse> putLogEvents({
  1. required List<InputLogEvent> logEvents,
  2. required String logGroupName,
  3. required String logStreamName,
  4. String? sequenceToken,
})

Uploads a batch of log events to the specified log stream.

You must include the sequence token obtained from the response of the previous call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token in the expectedSequenceToken field from InvalidSequenceTokenException. If you call PutLogEvents twice within a narrow time period using the same value for sequenceToken, both calls might be successful or one might be rejected.

The batch of events must satisfy the following constraints:

  • The maximum batch size is 1,048,576 bytes. This size is calculated as the sum of all event messages in UTF-8, plus 26 bytes for each log event.
  • None of the log events in the batch can be more than 2 hours in the future.
  • None of the log events in the batch can be older than 14 days or older than the retention period of the log group.
  • The log events in the batch must be in chronological order by their timestamp. The timestamp is the time the event occurred, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. (In AWS Tools for PowerShell and the AWS SDK for .NET, the timestamp is specified in .NET format: yyyy-mm-ddThh:mm:ss. For example, 2017-09-15T13:45:30.)
  • A batch of log events in a single request cannot span more than 24 hours. Otherwise, the operation fails.
  • The maximum number of log events in a batch is 10,000.
  • There is a quota of 5 requests per second per log stream. Additional requests are throttled. This quota can't be changed.
If a call to PutLogEvents returns "UnrecognizedClientException" the most likely cause is an invalid AWS access key ID or secret key.

May throw InvalidParameterException. May throw InvalidSequenceTokenException. May throw DataAlreadyAcceptedException. May throw ResourceNotFoundException. May throw ServiceUnavailableException. May throw UnrecognizedClientException.

Parameter logEvents : The log events.

Parameter logGroupName : The name of the log group.

Parameter logStreamName : The name of the log stream.

Parameter sequenceToken : The sequence token obtained from the response of the previous PutLogEvents call. An upload in a newly created log stream does not require a sequence token. You can also get the sequence token using DescribeLogStreams. If you call PutLogEvents twice within a narrow time period using the same value for sequenceToken, both calls might be successful or one might be rejected.

Implementation

Future<PutLogEventsResponse> putLogEvents({
  required List<InputLogEvent> logEvents,
  required String logGroupName,
  required String logStreamName,
  String? sequenceToken,
}) async {
  ArgumentError.checkNotNull(logEvents, 'logEvents');
  ArgumentError.checkNotNull(logGroupName, 'logGroupName');
  _s.validateStringLength(
    'logGroupName',
    logGroupName,
    1,
    512,
    isRequired: true,
  );
  ArgumentError.checkNotNull(logStreamName, 'logStreamName');
  _s.validateStringLength(
    'logStreamName',
    logStreamName,
    1,
    512,
    isRequired: true,
  );
  _s.validateStringLength(
    'sequenceToken',
    sequenceToken,
    1,
    1152921504606846976,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'Logs_20140328.PutLogEvents'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'logEvents': logEvents,
      'logGroupName': logGroupName,
      'logStreamName': logStreamName,
      if (sequenceToken != null) 'sequenceToken': sequenceToken,
    },
  );

  return PutLogEventsResponse.fromJson(jsonResponse.body);
}