Skip to content

feat: add log rotation, non-blocking writes, and CLI log flags#398

Merged
simonrw merged 1 commit into
mainfrom
worktree-logging
Apr 7, 2026
Merged

feat: add log rotation, non-blocking writes, and CLI log flags#398
simonrw merged 1 commit into
mainfrom
worktree-logging

Conversation

@simonrw
Copy link
Copy Markdown
Owner

@simonrw simonrw commented Apr 7, 2026

Summary

  • Replace synchronous single-file logging with tracing-appender for daily log rotation (files named tui.log.YYYY-MM-DD) and non-blocking background writes so logging never blocks the UI render loop
  • Add --log-level CLI flag (trace/debug/info/warn/error, default info) that applies only to project crates while keeping external dependencies at warn. RUST_LOG env var still takes precedence
  • Add --log-path CLI flag to override the log directory (defaults to ~/.local/share/dapgui/)

Test plan

  • cargo check --all-targets --all-features passes
  • cargo xtask test — 393 tests pass
  • cargo xtask doctest passes
  • Run dap-tui, quit, verify dated log files appear in ~/.local/share/dapgui/
  • Run dap-tui --log-level debug and verify debug-level output from project crates only
  • Run dap-tui --log-path /tmp/test-logs and verify logs go to that directory

🤖 Generated with Claude Code

Replace synchronous single-file logging with tracing-appender for daily
log rotation and non-blocking background writes. Add --log-level and
--log-path CLI flags for controlling log verbosity and output directory.
The --log-level flag applies only to project crates while keeping
external dependencies at warn level. RUST_LOG still takes precedence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@simonrw simonrw merged commit e392b0f into main Apr 7, 2026
14 checks passed
@simonrw simonrw deleted the worktree-logging branch April 7, 2026 12:32
@github-actions github-actions Bot mentioned this pull request Apr 7, 2026
simonrw pushed a commit that referenced this pull request Apr 7, 2026
## 🤖 New release

* `dap-gui-config`: 0.1.0 -> 0.2.0 (⚠ API breaking changes)
* `dap-gui-ui-core`: 0.1.0 -> 0.1.1 (✓ API compatible changes)
* `dap-gui-egui`: 0.1.0 -> 0.1.1
* `dap-tui`: 0.1.0 -> 0.1.1

### ⚠ `dap-gui-config` breaking changes

```text
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field Config.theme in /tmp/.tmppHoepB/dap-gui/crates/config/src/lib.rs:26
```

<details><summary><i><b>Changelog</b></i></summary><p>

## `dap-gui-config`

<blockquote>

##
[0.2.0](dap-gui-config-v0.1.0...dap-gui-config-v0.2.0)
- 2026-04-07

### Added

- add automatic dark/light theme switching based on system preference
([#397](#397))

### Other

- release v0.1.0 ([#394](#394))
</blockquote>

## `dap-gui-ui-core`

<blockquote>

##
[0.1.1](dap-gui-ui-core-v0.1.0...dap-gui-ui-core-v0.1.1)
- 2026-04-07

### Added

- add automatic dark/light theme switching based on system preference
([#397](#397))
- add log rotation, non-blocking writes, and CLI log flags
([#398](#398))
- use launch config cwd and show file browser overflow
([#396](#396))
- add configurable keybindings with TOML config file
([#393](#393))
</blockquote>

## `dap-gui-egui`

<blockquote>

##
[0.1.1](dap-gui-egui-v0.1.0...dap-gui-egui-v0.1.1)
- 2026-04-07

### Added

- add automatic dark/light theme switching based on system preference
([#397](#397))
- use launch config cwd and show file browser overflow
([#396](#396))
- add configurable keybindings with TOML config file
([#393](#393))
</blockquote>

## `dap-tui`

<blockquote>

##
[0.1.1](dap-tui-v0.1.0...dap-tui-v0.1.1)
- 2026-04-07

### Added

- add automatic dark/light theme switching based on system preference
([#397](#397))
- add log rotation, non-blocking writes, and CLI log flags
([#398](#398))
- use launch config cwd and show file browser overflow
([#396](#396))
- add readline keybindings and input history to all text input fields
- add configurable keybindings with TOML config file
([#393](#393))
- default to file picker panel on startup without target
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.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