AdvancedFileOutput class
Accumulates logs in a buffer to reduce frequent disk, writes while optionally switching to a new log file if it reaches a certain size.
AdvancedFileOutput offer various improvements over the original FileOutput:
- Managing an internal buffer which collects the logs and only writes them after a certain period of time to the disk.
- Dynamically switching log files instead of using a single one specified by the user, when the current file reaches a specified size limit (optionally).
The buffered output can significantly reduce the frequency of file writes, which can be beneficial for (micro-)SD storage and other types of low-cost storage (e.g. on IoT devices). Specific log levels can trigger an immediate flush, without waiting for the next timer tick.
New log files are created when the current file reaches the specified size limit. This is useful for writing "archives" of telemetry data and logs while keeping them structured.
Constructors
-
AdvancedFileOutput({required String path, bool overrideExisting = false, Encoding encoding = utf8, List<
Level> ? writeImmediately, Duration maxDelay = const Duration(seconds: 2), int maxBufferSize = 2000, int maxFileSizeKB = 1024, String latestFileName = 'latest.log', String fileNameFormatter(DateTime timestamp)?, int? maxRotatedFilesCount, Comparator<File> ? fileSorter, Duration fileUpdateDuration = const Duration(minutes: 1)}) - Creates a buffered file output.
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
destroy(
) → Future< void> -
inherited
-
init(
) → Future< void> -
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
output(
OutputEvent event) → void -
override
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited