unstale

pypi / concurrent-log-handler

concurrent-log-handler

What changed in concurrent-log-handler 0.9, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-27.

1 breaking1 security1 new APIs and options2 performance2 behavior and defaults5 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.8 on npm

concurrent-log-handler 0.912 changes

Breaking changes 1

  • The handler creates the log file on first write rather than in its constructor; the delay argument is ignored.

    0.9.30release notes

Security 1

  • When chmod or owner is configured, files are now pre-created with the correct permissions so other processes do not see them with intermediate permissions.

    0.9.30release notes

New APIs and options 1

  • Adds a hook to customize ConcurrentTimedRotatingFileHandler before its first rollover.

    0.9.29release notes

Performance 2

  • Fixes a Windows performance issue.

    0.9.31release notes

  • A duplicate stale-file check was removed from each write, cutting time per write by about 13% on a local disk when maxBytes is set.

    0.9.30release notes

Behavior and default changes 2

  • The handler skips chmod and chown when a file already has the configured mode and owner, and treats failures as non-fatal, preventing writes from failing for files owned by another user.

    0.9.30release notes

  • Both handlers keep an uncompressed rotated file after gzip fails, rather than deleting it or overwriting it during a later rotation.

    0.9.30release notes

Fixes and other changes 5

  • Configured chmod and owner settings now apply to rotated .gz files.

    0.9.30release notes

  • After fork, the child resets the handler's thread lock and clears inherited lock state, preventing hangs on logging and premature release of the parent's file lock.

    0.9.30release notes

  • Python 3.15 is now supported.

    0.9.30release notes

  • Rotated .gz files now use the configured umask instead of the process default umask.

    0.9.30release notes

  • Handlers inherited by child processes now reopen the lock file for independent lock isolation, and an in-process threading lock prevents threads from bypassing flock() serialization.

    0.9.29release notes