NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
A simple and powerful logger for Flutter apps with support for color-coding, JSON pretty-printing, and performance tracking.
Last release 1 months ago
27 Sep 2026
Release timing varies
gaps range from 2 weeks to 4 months
Some releases are documented
notes for 6 of 13 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
13 releases · first in 2025
One column per month.
`AstuteLogger.getAppMode()` — replaced by the appMode getter. (Deprecated alias not retained; migration is a one-line rename.)
AppMode enum (debug, profile, release, unknown) exposed via the
AstuteLogger.appMode getter, replacing the semantically confusing
getAppMode() method that returned a LogLevel.LogConfig.redactEmails flag (default true). Disabling it preserves
email addresses in logs for improved observability while still redacting
credit cards and other sensitive patterns.AstuteLogger.redactObject(Object?) — public key-based redaction helper
for nested maps and lists. Used internally by json() and exposed for
callers (including the Dio interceptor).AstuteLogger.flush() (@visibleForTesting) — awaits full drain of the
async write queue. Enables deterministic tests and shutdown-time flushing.AstuteLogger.resetFileCache() (@visibleForTesting) — clears the
internal File cache, primarily for test isolation.AstuteLogger.getLogsByTag(tag, {fileName}) now accepts a fileName
parameter so callers can read from non-default log files.lib/service/logging_interceptor.dart — a new LoggingInterceptor for
Dio that logs request/response/error traffic with structured redaction,
truncation, and response-time measurement.LoggingInterceptor options: logRequestHeaders, logRequestBody,
logResponseHeaders, logResponseBody, maxBodyLength,
maxHeaderValueLength (all configurable via constructor with assertions).FormData body logging — only field names and file basenames are
logged, never full paths or raw bytes.... [truncated, total N chars] suffix.test/astute_logger_test.darttest/logging_interceptor_test.dartStreamController-based queue with
an explicit bounded queue (Queue<_QueuedLogEvent>) with a 1024-event
capacity. Guarantees strict FIFO write ordering, back-pressure via slot
waiters, and per-event Future completion only after the log line is
persisted.Future<void> — write, json,
debug, info, warning, error, critical. Awaiting them provides a
durability guarantee; ignoring them preserves the old fire-and-forget
behavior.IOSink per call
(openWrite → flush → close) instead of writeAsString(flush: true).
This releases the OS file handle immediately, preventing Windows file
locks and improving durability semantics.getLogFile() now caches File instances correctly. The previous
implementation read from _logFilesCache but never populated it, defeating
the cache. Fixed._redactObject) instead of the free-text regex, which
failed on multi-line JSON (quoted keys broke the pattern match).json() now reuses _tryDecodeJson internally, avoiding duplicated
jsonDecode logic.$ in identifiers (closures and
generics) and includes a fallback pattern for frames without a trailing
(, matching real VM output more reliably.logExecutionTime and logExecutionTimeAsync now log via try/finally
so the timing line is always emitted, even when the measured function
throws. The original exception propagates unchanged._processLogQueue write path now uses the new _appendToFile helper.prettyPrint flag — previously a no-op because jsonDecode was
attempted on the fully-formatted log line. Now the raw message is decoded
and pretty-printed correctly, with the log prefix and suffix preserved.redactObject() before serialization.getLogFile never caching (see Changed).PathAccessException on file deletion — resolved by the
close-per-write change described above.AstuteLogger.getAppMode() — replaced by the appMode getter.
(Deprecated alias not retained; migration is a one-line rename.)Standardized log output with a consistent [log] prefix.
[log] prefix.README.md with getLogsByTag feature documentation.Nothing published for this version
### Documentation - Updated README.md. ---
README.md.Multiple log levels (debug, info, warning, error, critical).
debug, info, warning, error, critical).LogConfig.LoggerContext.runWithContext).json().logExecutionTime, logExecutionTimeAsync).kReleaseMode).Nothing published for this version
Nothing published for this version
Colored console logging by log level (debug, info, warning, error).
logJson, logJsonList).logPrettyList).logExecutionTime,
logExecutionTimeAsync).LoggerContext.runWithContext).Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Initial release of Astute Logger.
Your coding agent can read these notes before it upgrades. Set up the MCP server →