HttpLogStrategy class abstract
Base class for HTTP-based logging strategies.
Provides shared functionality for strategies that send logs to remote HTTP endpoints, including:
- Batch processing with configurable size and timeout
- Retry logic with exponential backoff
- HttpClient management
- Proper resource disposal
Subclasses only need to implement formatLogEntry, endpoint, headers, and strategyName to create a fully functional HTTP logging strategy.
Example:
class MyHttpStrategy extends HttpLogStrategy {
MyHttpStrategy({required this.apiKey})
: super(batchSize: 100, batchTimeout: Duration(seconds: 5));
final String apiKey;
@override
String get strategyName => 'MyHttpStrategy';
@override
String get endpoint => 'https://api.example.com/logs';
@override
Map<String, String> get headers => {'Authorization': 'Bearer $apiKey'};
@override
Map<String, dynamic> formatLogEntry(LogEntry entry) => entry.toMap();
}
- Inheritance
-
- Object
- LogStrategy
- HttpLogStrategy
- Implementers
Constructors
-
HttpLogStrategy({int batchSize = 100, Duration batchTimeout = const Duration(seconds: 5), int maxRetries = 3, Duration retryDelay = const Duration(seconds: 1), bool useIsolate = true, LogLevel logLevel = LogLevel.none, List<
LogEvent> ? supportedEvents}) - Creates an HttpLogStrategy with the given configuration.
Properties
- batchSize → int
-
Number of log entries to accumulate before sending a batch.
final
- batchTimeout → Duration
-
Maximum time to wait before sending an incomplete batch.
final
- endpoint → String
-
The HTTP endpoint URL to send log batches to.
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
-
headers
→ Map<
String, String> -
HTTP headers to include with each batch request.
no setter
- loggerLogLevel ↔ LogLevel
-
The log level set by the logger using this strategy. Used to determine if a message should be logged.
getter/setter pairinherited
- logLevel ↔ LogLevel
-
The minimum log level that this strategy handles for logging.
getter/setter pairinherited
- maxRetries → int
-
Maximum number of retry attempts for failed batch sends.
final
- performanceOperationName → String
-
The performance monitor operation name for batch sends.
no setter
- retryDelay → Duration
-
Base delay between retry attempts (multiplied by attempt number).
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- strategyName → String
-
The name of this strategy, used in log messages for debugging.
no setter
-
supportedEvents
↔ List<
LogEvent> ? -
A list of specific LogEvent types that this strategy supports. If null, all events are considered supported.
getter/setter pairinherited
- useIsolate → bool
-
Whether this strategy should use isolates for heavy operations.
finalinherited
Methods
-
dispose(
) → void - Disposes the strategy and cleans up resources.
-
error(
LogEntry entry) → Future< void> -
Logs an error.
inherited
-
fatal(
LogEntry entry) → Future< void> -
Logs a fatal error.
inherited
-
flush(
) → Future< void> - Forces sending of all pending logs.
-
formatLogEntry(
LogEntry entry) → Map< String, dynamic> - Formats a single LogEntry into a map suitable for the target API.
-
handleLog(
LogEntry entry) → Future< void> -
Main log handler - override this single method for uniform handling of all log levels.
override
-
info(
LogEntry entry) → Future< void> -
Logs an info message.
inherited
-
log(
LogEntry entry) → Future< void> -
Logs a debug or general message.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
prepareBatchBody(
List< Map< batch) → Future<String, dynamic> >({List< int> body, Map<String, String> extraHeaders})> - Prepares the batch body bytes for sending.
-
shouldLog(
{LogEvent? event}) → bool -
Determines whether a log operation should proceed based on the event and log level.
inherited
-
toString(
) → String -
Provides a string representation of the strategy including its type and log level.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited