LogTape changelog 
Version 1.2.0 
To be released.
@logtape/logtape 
Added support for nested property access in message template placeholders, enabling direct access to nested objects, arrays, and complex data structures without manual property extraction. [#91, #93 by 伍闲犬]
- Dot notation: 
{user.name},{order.customer.profile.tier} - Array indexing: 
{users[0]},{users[0].name} - Bracket notation with quotes: 
{user["full-name"]},{data["a.b c"]} - Escape sequences in quoted strings: 
\",\',\\,\n,\t,\r,\b,\f,\v,\0, and Unicode escapes (\uXXXX) - Optional chaining: 
{user?.profile?.email},{data?.items?.[0]?.name} - Combined patterns: 
{users[0]?.profile?.["contact-info"]?.email} - Enhanced security: blocks access to 
__proto__,prototype, andconstructorat any depth to prevent prototype pollution 
- Dot notation: 
 Added context-based isolation for fingers crossed sink to handle scenarios like HTTP request tracing where logs should be isolated by implicit context values. [#86]
- Added 
isolateByContextoption toFingersCrossedOptionsfor isolating buffers based on specified context keys from log record properties. - Context isolation can be combined with existing category isolation for fine-grained control over buffer flushing behavior.
 - Each context buffer maintains separate trigger states and size limits, preventing unrelated logs from being flushed together.
 - Added memory management options for context isolation to prevent memory leaks in high-traffic applications: 
bufferTtlMsfor time-based cleanup,cleanupIntervalMsfor configurable cleanup intervals, andmaxContextsfor LRU-based capacity limits. TTL and LRU can be used independently or together for comprehensive memory management. 
- Added 
 Changed the type of the
TextFormatterOptions.valuecallback to accept a second parameter that provides access to the default cross-runtimeinspect()function, making it easier to implement custom value formatting with fallback to default behavior.- Changed the type of 
TextFormatterOptions.valueto(value: unknown, inspect: (value: unknown, options?: { colors?: boolean }) => string) => string(was(value: unknown) => string). - The second parameter is optional and can be ignored for backward compatibility.
 - Users can now customize formatting for specific value types while falling back to the cross-runtime 
inspect()function for others, without needing to reimplement the complex runtime detection logic. 
- Changed the type of 
 
@logtape/redaction 
- Extended field-based redaction to recursively redact sensitive fields in objects nested within arrays, providing more comprehensive protection for structured data. [#94]
 
Version 1.1.2 
Released on October 22, 2025.
- Fixed Vercel Edge Runtime compatibility issue where LogTape caused "Node.js API is used (process.on) which is not supported in the Edge Runtime" error during configuration. Implemented defense-in-depth approach with both 
EdgeRuntimeglobal variable detection and dynamic bracket notation access (proc?.["on"]) to avoid static analysis detection while ensuring runtime safety. [#92] 
Version 1.1.1 
Released on September 18, 2025.
@logtape/pretty 
- Fixed a bug where logs with long property keys would cause the formatter to fail, resulting in no output being displayed. The issue occurred when property keys exceeded the indentation width, causing negative padding calculations that threw a 
RangeError. [#87] 
Version 1.1.0 
Released on September 11, 2025.
@logtape/logtape 
Added “fingers crossed” logging feature that buffers debug logs in memory and only outputs them when a trigger event occurs, reducing log noise while preserving context for debugging. [#59]
- Added 
fingersCrossed()function that implements the fingers crossed logging pattern with support for trigger levels, buffer management, and category isolation. - Added 
FingersCrossedOptionsinterface for configuring fingers crossed behavior with options for trigger level, buffer size, and category isolation modes. 
- Added 
 Added
Logger.emit()method for emitting log records with custom fields, particularly useful for integrating external logs while preserving their original timestamps. [#78]
@logtape/file 
Changed
getStreamFileSink()to implementAsyncDisposableinstead ofDisposable.Fixed flaky behavior in high-volume logging scenarios where some log records could be lost during sink disposal. The sink now ensures all data is fully written to disk before disposal completes.
@logtape/pretty 
- Added 
PrettyFormatterOptions.propertiesoption for displayingLogRecord.properties(structured data). [#69, #70 by Matthias Feist] 
@logtape/sentry 
Changed the type of the
getSentrySink()function to accept any Sentry client implementing the public capture APIs (was(client?: Client) => Sink). Introduced a structuralSentryClientLikeinterface to avoid nominal type conflicts across differing@sentry/coreinstances. [#80 by Sora Morimoto]Fixed preservation of Sentry template metadata by returning a
ParameterizedStringfrom the internalgetParameterizedString()so thatcaptureMessagereceives the templated form and breadcrumbs/formatting can leverage__sentry_template_*metadata. [#80 by Sora Morimoto]Fixed cross-runtime compatibility by removing an unnecessary
node:utiltype import referenced only by documentation, avoiding module resolution issues outside Node.js. [#80 by Sora Morimoto]
Version 1.0.6 
Released on October 22, 2025.
Fixed Vercel Edge Runtime compatibility issue where LogTape caused "Node.js API is used (process.on) which is not supported in the Edge Runtime" error during configuration. Implemented defense-in-depth approach with both
EdgeRuntimeglobal variable detection and dynamic bracket notation access (proc?.["on"]) to avoid static analysis detection while ensuring runtime safety. [#92]Changed
getStreamFileSink()in @logtape/file package to returnSink & AsyncDisposableinstead ofSink & Disposablefor proper asynchronous stream cleanup. The previous synchronous disposal did not wait for streams to finish flushing data to disk, causing incomplete writes in high-volume logging scenarios and resource leaks. The new async disposal properly waits for both the stream 'finish' event and file handle closure, ensuring all data is written and resources are cleaned up correctly.
Version 1.0.5 
Released on September 10, 2025.
- The satellite packages (@logtape/file, @logtape/otel, @logtape/redaction, @logtape/sentry, and @logtape/syslog) now properly specify version compatibility constraints for their peer dependency on @logtape/logtape, ensuring consumers install compatible versions of the core package.
 
Version 1.0.4 
Released on July 6, 2025.
- Fixed a bug where the optimized code paths in 
getJsonLinesFormatter()did not output newline characters between JSON objects, violating the JSON Lines specification. This completes the fix that was partially addressed in version 1.0.3. 
Version 1.0.3 
Released on July 6, 2025.
- Fixed a bug where 
jsonLinesFormatterand the formatter returned bygetJsonLinesFormatter()did not output newline characters between JSON objects, violating the JSON Lines specification that requires one JSON object per line. 
Version 1.0.2 
Released on July 4, 2025.
- Fixed Vercel Edge Functions compatibility issue where LogTape caused Node.js API warnings due to 
process.onusage detection. Refactored process access to use type-safeglobalThiscasting instead of@ts-ignoredirective. [#66, #67 by Martin Petrovsky] 
Version 1.0.1 
Released on July 3, 2025.
Fixed React Native compatibility issue in @logtape/pretty package where top-level Node.js imports caused build failures. Replaced direct
node:utilimports with platform-specific utilities using conditional module loading via package.json imports map. [#63]Fixed compatibility issue with Cloudflare Workers where
process.on()is not available, causing configuration to fail withprocess.on is not a functionerror. LogTape now checks forprocess.on()availability before attempting to register exit handlers. [#64, #65 by Martin Petrovsky]
Version 1.0.0 
Released on June 22, 2025.
Added
getLogLevels()function to retrieve all available log levels.Added
LogMethodtype for better type inference of logger methods.Added
nonBlockingoption togetConsoleSink(),getStreamSink(),getFileSink(), andgetRotatingFileSink()for high-performance logging scenarios. When enabled, log records are buffered and flushed in the background, preventing blocking of the main thread.- Console and stream sinks accept 
nonBlocking?: boolean | { bufferSize?: number; flushInterval?: number }option. - File sinks accept 
nonBlocking?: booleanoption. - Default buffer size is 100 records for console/stream sinks and background flushing for file sinks.
 - Default flush interval is 100ms for console/stream sinks.
 - Console sink returns 
Sink & Disposablein non-blocking mode. - Stream and file sinks return 
Sink & AsyncDisposablein non-blocking mode. - Buffer-full flushes are now asynchronous (non-blocking) instead of synchronous to maintain performance during high-volume logging.
 - Console and stream sinks include automatic buffer overflow protection that prevents unbounded memory growth by dropping oldest records when buffer exceeds 2x the configured size.
 - Errors during background flushing are silently ignored to prevent application disruption.
 
- Console and stream sinks accept 
 Added
getStreamFileSink()function in @logtape/file package for high-performance file logging using Node.js PassThrough streams.- Added 
StreamFileSinkOptionsinterface for configuring stream-based file sink behavior. - Uses PassThrough streams piped to WriteStreams for optimal I/O performance with automatic backpressure management and non-blocking writes.
 - Optimized for high-volume logging scenarios with superior throughput compared to standard file sinks.
 - Simple configuration with 
highWaterMark(default: 16384 bytes) and optional customformatteroptions. - Automatic stream cleanup and proper resource disposal via 
Disposableinterface. - Ideal for production applications requiring high-performance file logging without complex buffering configuration.
 
- Added 
 Added
fromAsyncSink()function to convert async sinks to regular sinks with proper async handling.- Added 
AsyncSinktype:(record: LogRecord) => Promise<void>. fromAsyncSink()chains async operations to ensure order preservation.- Errors in async sinks are caught to prevent breaking the promise chain.
 - Returns a sink with 
AsyncDisposablesupport that waits for all pending operations on disposal. 
- Added 
 Added @logtape/cloudwatch-logs package for AWS CloudWatch Logs integration. [#48, #49]
- Added 
getCloudWatchLogsSink()function to send logs to AWS CloudWatch Logs. - Added 
CloudWatchLogsSinkOptionsinterface for configuration. - Supports intelligent batching up to 10,000 events or 1MiB per batch.
 - Includes exponential backoff retry strategy for error handling.
 - Works with existing CloudWatch Logs clients or creates new ones automatically.
 - Supports custom AWS credentials and regions.
 - Added 
formatteroption to support custom text formatters, includingjsonLinesFormatter()for enhanced CloudWatch Logs Insights querying capabilities with dot notation support. 
- Added 
 Added @logtape/windows-eventlog package for Windows Event Log integration. [#47, #50]
- Added 
getWindowsEventLogSink()function to send logs to Windows Event Log. - Added 
WindowsEventLogSinkOptionsinterface for configuration. - Cross-runtime support: Works with Deno, Node.js, and Bun on Windows.
 - Uses runtime-optimized FFI implementations: Deno FFI, koffi for Node.js, and Bun FFI for maximum performance.
 - Supports all LogTape log levels with proper Event Log type mapping (Error, Warning, Information).
 - Includes structured logging support with formatted context information.
 - Added 
validateWindowsPlatform()function for platform validation. - Added 
WindowsPlatformErrorandWindowsEventLogErrorfor proper error handling. - Platform-restricted installation (Windows only) for safety.
 - Includes PowerShell-based test verification for actual Event Log integration.
 
- Added 
 Added @logtape/pretty package for beautiful console formatting designed for local development. [#46, #51]
- Added 
getPrettyFormatter()function to create visually appealing log formatters with colorful icons, smart category truncation, and perfect column alignment. - Added 
prettyFormatterconstant for quick setup with sensible defaults. - Added 
PrettyFormatterOptionsinterface for extensive customization. - Features Signale-inspired design with emojis for each log level: 🔍 trace, 🐛 debug, ✨ info, ⚠️ warning, ❌ error, 💀 fatal.
 - Includes smart category truncation that preserves important context while maintaining layout (e.g., 
app·server…middleware). - Supports true color terminals with rich color schemes and dimmed text for enhanced readability.
 - Provides optional timestamp display, custom icons, color control, and flexible layout options.
 - Supports multiple text styles combination (e.g., 
["bold", "underline"]) for level, category, message, and timestamp formatting. - Includes word wrapping feature with proper indentation alignment to maintain visual consistency for long messages.
 - Optimized for development environments with focus on visual clarity and developer experience.
 
- Added 
 Added @logtape/adaptor-pino package for integrating LogTape with Pino logging infrastructure. [#52]
- Added 
getPinoSink()function to forward LogTape log records to Pino loggers. - Added 
PinoSinkOptionsinterface for configuring the adapter behavior. - Added 
CategoryOptionsinterface for customizing category formatting in Pino log messages. - Added 
install()function for convenient auto-configuration with custom Pino logger and configuration options. - Supports configurable category display with position (
start/end), decorators ([],(),<>,{},:,-,|,/, or none), and custom separators for multi-part categories. - Maps LogTape log levels to equivalent Pino levels.
 - Preserves LogTape's structured logging properties as Pino fields.
 - Enables seamless adoption of LogTape-enabled libraries in applications using Pino without requiring logging infrastructure changes.
 
- Added 
 Added @logtape/adaptor-winston package for integrating LogTape with winston logging infrastructure. [#52]
- Added 
getWinstonSink()function to forward LogTape log records to winston loggers. - Added 
WinstonSinkOptionsinterface for configuring the adapter behavior. - Added 
CategoryOptionsinterface for customizing category formatting in winston log messages. - Added 
install()function for convenient auto-configuration with optional custom winston logger and configuration options. - Added 
install.tsmodule for automatic setup via simple import. - Supports configurable category display with position (
start/end), decorators ([],(),<>,{},:,-,|,/, or none), and custom separators for multi-part categories. - Maps LogTape log levels to equivalent winston levels with customizable level mapping.
 - Supports custom value formatters for interpolated values in log messages.
 - Preserves LogTape's structured logging properties as winston fields.
 - Enables seamless adoption of LogTape-enabled libraries in applications using winston without requiring logging infrastructure changes.
 
- Added 
 Fixed browser support for @logtape/otel package by removing direct
node:processdependency. [#53]- Replaced 
node:processimport with cross-runtime environment variable access that works in Deno, Node.js, and browsers. - Changed tsdown platform setting from 
"node"to"neutral"to enable browser compatibility. - The 
getOpenTelemetrySink()function now works in all JavaScript runtimes without throwing module resolution errors. 
- Replaced 
 Removed the deprecated
LoggerConfig.levelproperty. UseLoggerConfig.lowestLevelinstead for setting the minimum log level, or useLoggerConfig.filtersfor more advanced filtering.
Version 0.12.3 
Released on September 10, 2025.
- The satellite packages (@logtape/file, @logtape/otel, @logtape/redaction, @logtape/sentry, and @logtape/syslog) now properly specify version compatibility constraints for their peer dependency on @logtape/logtape, ensuring consumers install compatible versions of the core package.
 
Version 0.12.2 
Released on July 6, 2025.
- Fixed a bug where 
jsonLinesFormatterand the formatter returned bygetJsonLinesFormatter()did not output newline characters between JSON objects, violating the JSON Lines specification that requires one JSON object per line. 
Version 0.12.1 
Released on June 19, 2025.
Fixed module resolution issues in CommonJS environments and bundlers like Vite by properly configuring conditional exports for types.
- Updated all package.json exports to use conditional 
typesexports with separate.d.tsfiles for ESM imports and.d.ctsfiles for CommonJS requires. - This resolves runtime errors in frameworks like SvelteKit that require proper CommonJS modules for modules imported in CommonJS contexts.
 
- Updated all package.json exports to use conditional 
 
Version 0.12.0 
Released on June 15, 2025.
Added the
"trace"severity level, which is lower than"debug". [#24]- Added 
"trace"to theLogLevelunion type. - Added 
Logger.trace()method. 
- Added 
 Added
Logger.warning()method which is an alias forLogger.warn(). [#44]Added
bufferSizeandflushIntervaloptions toFileSinkOptionsfor configurable buffering in file sinks.getFileSink()andgetRotatingFileSink()functions now accept abufferSizeoption to control write buffering behavior.getFileSink()andgetRotatingFileSink()functions now accept aflushIntervaloption to control the time-based flushing of the buffer to disk.- When 
bufferSizeis 0 or negative, writes are immediate without buffering. - When 
bufferSizeis positive, log entries are buffered until the buffer size is exceeded, then flushed to disk. - Default buffer size is 8192 characters for improved performance.
 - Buffer content is automatically flushed when the sink is disposed.
 - When 
flushIntervalis 0 or negative, the time-based flushing is disabled. - Default 
flushIntervalis 5000 milliseconds (5 seconds) for periodic flushing. 
Added @logtape/syslog package for sending log messages to syslog servers using RFC 5424 format.
- Added 
getSyslogSink()function to create syslog sinks with support for both UDP and TCP protocols. - Supports all standard RFC 5424 facilities (
kern,user,mail,daemon,local0–7, etc.) and automatic priority calculation. - Includes structured data support for log record properties with proper RFC 5424 escaping of special characters.
 - Cross-runtime compatibility with Deno, Node.js, and Bun.
 - Configurable connection timeouts, custom hostnames, and application names.
 
- Added 
 Now @logtape/otel, @logtape/sentry, and @logtape/syslog packages are released along with @logtape/logtape package. This means they share the same version number and changelog. This is to ensure that the packages are always compatible with each other and to simplify the release process.
Improved build and test infrastructure by migrating from dnt to tsdown for npm package bundling. [#43]
Version 0.11.1 
Released on July 6, 2025.
- Fixed a bug where 
jsonLinesFormatterand the formatter returned bygetJsonLinesFormatter()did not output newline characters between JSON objects, violating the JSON Lines specification that requires one JSON object per line. 
Version 0.11.0 
Released on June 2, 2025.
Loggers now allow to interpolate all properties at once through the special placeholder
{*}. This is useful for logging objects with many properties without having to specify each property name in the message template.Logger.debug(),Logger.info(),Logger.warn(),Logger.error(), andLogger.fatal()methods now accept a message template with the{*}placeholder. Unless there is a property with the name*, the{*}placeholder will be replaced with a stringified version of theLogRecord.propertiesobject.- As a shorthand, overloads of 
Logger.debug(),Logger.info(),Logger.warn(),Logger.error(), andLogger.fatal()methods that accept an object as the first argument now treat the object as a message template with the{*}placeholder. This is equivalent to calling the method with a message template of{*}and the object as the second argument. 
Added the built-in JSON Lines formatter.
- Added 
jsonLinesFormatter()function. - Added 
getJsonLinesFormatter()function. - Added 
JsonLinesFormatterOptionsinterface. 
- Added 
 
Version 0.10.0 
Released on May 19, 2025.
Added
@logtape/redactionpackage for redacting sensitive information from log records.- Added 
redactByField()function. - Added 
FieldPatterntype. - Added 
FieldPatternstype. - Added 
FieldRedactionOptionsinterface. - Added 
DEFAULT_REDACT_FIELDSconstant. - Added 
redactByPattern()function. - Added 
RedactionPatterninterface. - Added 
RedactionPatternstype. - Added 
CREDIT_CARD_NUMBER_PATTERNconstant. - Added 
EMAIL_ADDRESS_PATTERNconstant. - Added 
JWT_PATTERNconstant. - Added 
KR_RRN_PATTERNconstant. - Added 
US_SSN_PATTERNconstant. 
- Added 
 The text formatter now can omit the timestamp from the formatted message. [#35 by Ooker]
- Changed the type of the 
TextFormatterOptions.timestampoption to"date-time-timezone" | "date-time-tz" | "date-time" | "time-timezone" | "time-tz" | "time" | "date" | "rfc3339" | "none" | "disabled" | ((ts: number) => string | null)(was"date-time-timezone" | "date-time-tz" | "date-time" | "time-timezone" | "time-tz" | "time" | "date" | "rfc3339" | ((ts: number) => string)). - Changed the type of the 
FormattedValues.timestampproperty tostring | null(wasstring). 
- Changed the type of the 
 Added
FileSinkOptions.lazyoption. [#38, #39 by Rickey Ward]The
configure()andconfigureSync()functions now check for duplicate logger configurations with the same category and throw aConfigErrorwhen detected. This prevents unintended overriding of logger configurations when configuring multiple loggers with the same category. [#41]
Version 0.9.2 
Released on May 15, 2025.
- Fixed a bug where importing 
@logtape/logtapethrew aReferenceErroron Node.js or Bun when LogTape was installed from JSR (instead of npm). [#42] 
Version 0.9.1 
Released on April 24, 2025.
- Fixed a CORS error when using LogTape in web browser environments like Fresh islands components due to importing Node.js 
node:utilmodule. [#40] 
Version 0.9.0 
Released on March 1, 2025.
Moved file sinks and rotating file sinks to separate packages. [#19, #27, #28]
- Moved 
getFileSink()function to@logtape/filepackage. - Moved 
FileSinkOptionsinterface to@logtape/filepackage. - Moved 
getRotatingFileSink()function to@logtape/filepackage. - Moved 
RotatingFileSinkOptionsinterface to@logtape/filepackage. 
- Moved 
 Added synchronous versions of configuration functions. [#12, #29 by Murph Murphy]
- Added 
configureSync()function. - Added 
disposeSync()function. - Added 
resetSync()function. 
- Added 
 Added
ConsoleSinkOptions.levelMapoption.
Version 0.8.2 
Released on February 11, 2025.
- Fixed a bug of text formatters where they truncated string and array values in the formatted message. [#30]
 
Version 0.8.1 
Released on February 1, 2025.
- Fixed a bug where when a child logger is configured with a lower 
lowestLevelthan its parent logger, a log record with a severity level lower than the parent logger'slowestLeveland higher than the child logger'slowestLevelwould not be filtered out by the parent logger. 
Version 0.8.0 
Released on November 20, 2024.
Renewed the API to configure the lowest severity level of loggers. [#26]
- Added 
LoggerConfig.lowestLevelproperty. - Deprecated 
LoggerConfig.levelproperty in favor ofLoggerConfig.lowestLevel. 
- Added 
 Added
compareLogLevel()function.
Version 0.7.2 
Released on February 11, 2025.
- Fixed a bug of text formatters where they truncated string and array values in the formatted message. [#30]
 
Version 0.7.1 
Released on October 30, 2024.
- The 
withContext()function no more throws an error even if nocontextLocalStorageis configured. Instead, it will log a warning message to the["logtape", "meta"]logger. 
Version 0.7.0 
Released on October 29, 2024.
Introduced implicit contexts.
- Added 
withContext()function. - Added 
Config.contextLocalStorageoption. - Added 
ContextLocalStorageinterface. 
- Added 
 
Version 0.6.5 
Released on February 11, 2025.
- Fixed a bug of text formatters where they truncated string and array values in the formatted message. [#30]
 
Version 0.6.4 
Released on October 28, 2024.
- Fixed a build warning due to importing 
node:fsandnode:utilmodules on Next.js' client rendering. [#19] - Made it to work on Deno 2.0.0 or higher.
 
Version 0.6.3 
Released on October 3, 2024.
- Fixed a build error due to importing 
node:fsandnode:utilmodules on Next.js' client rendering. 
Version 0.6.2 
Released on September 24, 2024.
Version 0.6.1 
Released on September 24, 2024.
Version 0.6.0 
Released on September 24, 2024.
Loggers now can override sinks of their ascendants. Still, they inherit the sinks of their ascendants by default. [#15]
- Added 
LoggerConfig.parentSinksproperty. 
- Added 
 Placeholders in message templates now forgive leading and trailing spaces. However, if a property with exactly the same name exists, it will be prioritized over space-trimmed properties. [#16]
Added
LogRecord.rawMessageproperty. [#17]Built-in text formatters now can be customized with a
TextFormatterOptionsobject. [#13]- Added 
TextFormatterOptionsinterface. - Added 
FormattedValuesinterface. - Added 
getTextFormatter()function. - Added 
AnsiColortype. - Added 
AnsiStyletype. - Added 
AnsiColorFormatterOptionsinterface. - Added 
getAnsiColorFormatter()function. 
- Added 
 
Version 0.5.4 
Released on September 24, 2024.
Version 0.5.3 
Released on September 24, 2024.
Version 0.5.2 
Released on September 23, 2024.
Version 0.5.1 
Released on September 10, 2024.
Fixed a bug of
defaultTextFormatter()function where it rendered embedded values in the message as JSON instead ofutil.inspect()on Node.js and Bun.Fixed a bug of
ansiColorFormatter()function where it failed to colorize embedded values in the message on Node.js and Bun.
Version 0.5.0 
Released on August 29, 2024.
LogTape now provides contexts for loggers. [#7, #8]
- Added 
Logger.with()method. 
- Added 
 The console sink now can take a
TextFormatterbesides aConsoleFormatterfor formatting log records.- The type of 
ConsoleSinkOptions.formatterbecameConsoleFormatter | TextFormatter | undefined(wasConsoleFormatter | undefined). 
- The type of 
 Added
ansiColorFormatter()function.configure()function'sfiltersoption became optional.- The type of 
Config.filtersbecameRecord<string, FilterLike> | undefined(wasRecord<string, FilterLike>). 
- The type of 
 
Version 0.4.3 
Released on August 22, 2024.
- Fixed a bug where 
getRotatingFileSink()function had failed to create a new log file when there's no log file to rotate yet. [#9] 
Version 0.4.2 
Released on July 15, 2024.
LogTape now works well on edge functions. [#5]
- The npm version of LogTape no more depends on 
node:stream/webmodule. - LogTape now works well with JavaScript runtimes that do not support 
node:fsmodule. - LogTape now works well with JavaScript runtimes that do not support 
WeakRefclass. - Got rid of 
eval()from LogTape. 
- The npm version of LogTape no more depends on 
 
Version 0.4.1 
Released on July 2, 2024.
- Fixed a bug where LogTape failed to load under Node.js when incorporated in a project from JSR. [#3, #4 by Kitson Kelly]
 
Version 0.4.0 
Released on May 7, 2024.
Version 0.3.1 
Released on May 7, 2024.
- Fixed a bug where two or more versions of LogTape were imported in the same runtime, the 
Loggerinstances would not be shared between them. This was caused by theLoggerinstances being stored in a module-level variable. 
Version 0.3.0 
Released on April 22, 2024.
- Added 
parseLogLevel()function. - Added 
isLogLevel()function. - Added 
getConfig()function. - Added 
withFilter()function. 
Version 0.2.3 
Released on May 7, 2024.
- Fixed a bug where two or more versions of LogTape were imported in the same runtime, the 
Loggerinstances would not be shared between them. This was caused by theLoggerinstances being stored in a module-level variable. 
Version 0.2.2 
Released on April 21, 2024.
- Fixed a bug where the configured sinks and filters were reset after some inactivity. This was caused by garbage collection of the 
Loggerinstances. TheLoggerinstances are now kept alive by an internal set of strong references until explicitlyreset()is called. 
Version 0.2.1 
Released on April 20, 2024.
- Removed 
FileSinkDriverinterface. - Added 
RotatingFileSinkOptionsinterface. 
Version 0.2.0 
Released on April 20, 2024.
Sinks now can be asynchronously disposed of. This is useful for sinks that need to flush their buffers before being closed.
- Added 
dispose()function. - The return type of 
configure()function becamePromise<void>(wasvoid). - The return type of 
reset()function becamePromise<void>(wasvoid). - Configured sinks that implement 
AsyncDisposableare now disposed of asynchronously when the configuration is reset or the program exits. 
- Added 
 The return type of
getStreamSink()function becameSink & AsyncDisposable(wasSink & Disposable).Added
getRotatingFileSink()function.
Version 0.1.2 
Released on May 7, 2024.
- Fixed a bug where two or more versions of LogTape were imported in the same runtime, the 
Loggerinstances would not be shared between them. This was caused by theLoggerinstances being stored in a module-level variable. 
Version 0.1.1 
Released on April 21, 2024.
- Fixed a bug where the configured sinks and filters were reset after some inactivity. This was caused by garbage collection of the 
Loggerinstances. TheLoggerinstances are now kept alive by an internal set of strong references until explicitlyreset()is called. 
Version 0.1.0 
Initial release. Released on April 19, 2024.