Skip to content

Reuse the Logger instead of reopening the log file on every call when saving to a file#345

Open
connorshea wants to merge 1 commit into
KnapsackPro:mainfrom
connorshea:claude/fix-logger-reuse
Open

Reuse the Logger instead of reopening the log file on every call when saving to a file#345
connorshea wants to merge 1 commit into
KnapsackPro:mainfrom
connorshea:claude/fix-logger-reuse

Conversation

@connorshea

Copy link
Copy Markdown

Description

AI Disclosure: This was generated using Claude Code with Opus 5. It has been reviewed and tested by me.

When KNAPSACK_PRO_LOG_DIR was set, KnapsackPro.logger built a new Logger and reopened the log file on every call. This fixes that behavior to reduce repetitive work and avoid the extra system calls that weren't necessary.

Checks

  • I added the changes to the UNRELEASED section of the CHANGELOG.md, including the needed bump (i.e., patch, minor, major)
  • I followed the architecture outlined below for RSpec in Queue Mode:
    • Pure: lib/knapsack_pro/pure/queue/rspec_pure.rb contains pure functions that are unit tested.
    • Extension: lib/knapsack_pro/extensions/rspec_extension.rb encapsulates calls to RSpec internals and is integration and E2E tested.
    • Runner: lib/knapsack_pro/runners/queue/rspec_runner.rb invokes the pure code and the extension to produce side effects, which are integration and E2E tested.

When KNAPSACK_PRO_LOG_DIR was set, `KnapsackPro.logger` built a new
`Logger` and reopened the log file on *every* call, because the log_dir
branch ran unconditionally instead of only when no logger existed yet.
A CI node leaked a Logger object and a file handle per log call.

The stdout logger was already memoized; the log_dir logger now is too.

Note one consequence worth a second opinion: assigning a custom logger
(`KnapsackPro.logger = Rails.logger`) while KNAPSACK_PRO_LOG_DIR is set
used to be silently overridden on the next `logger` call, and now wins.
That looks like the intended behaviour of a public writer, but it is a
change for anyone relying on the old precedence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant