cattail 0.1.0

Tail multiple files and glob patterns with live discovery and labeled output
Documentation

cattail

cattail tails multiple files and glob patterns at once, keeps a prefixed line per record, and follows new data as files grow or reappear.

It is designed for log-style files in active use:

  • startup glob expansion and deduped resolution
  • initial backlog display with -n, --lines
  • explicit --since-now for "start at the end" behavior
  • concurrent per-file follow workers
  • truncation and delete/recreate recovery
  • notify-backed watching with polling fallback
  • dynamic discovery of files created later that match startup globs

Install

After release, install from crates.io:

cargo install cattail

For local development from this checkout:

make install

To remove a local install:

make uninstall

Quick Start

cattail /var/log/syslog /var/log/auth.log
cattail -n 100 '/var/log/*.log'
cattail --since-now /tmp/a.log /tmp/b.log
cattail --prefix relative --interval-ms 100 '/var/log/*.log'

If you pass a glob, quote it so cattail performs the expansion.

Behavior Summary

  • every emitted line is prefixed with a source label
  • labels default to the shortest unique basename suffix
  • --prefix relative uses relative paths when possible
  • --prefix full always uses full paths
  • startup files print the requested backlog and then continue following
  • --since-now skips the backlog and follows from the current end
  • brand-new matching files discovered after launch start from the beginning of their current contents
  • truncation resets the read offset to the start of the file
  • delete/recreate is treated as a fresh file when the disappearance is observed

Release Artifacts

Generated man pages and shell completions live under packaging/.

Regenerate them with:

make man
make completions

Demo

Run the smoke demo to see backlog, live appends, truncation, delete/recreate, and dynamic discovery:

scripts/smoke_cattail.sh

Set CATTAIL_SMOKE_BURST=1 to add a short burst phase to the demo.

Documentation

Limitations

  • polling remains part of the recovery path, so latency is bounded by --interval-ms when notify is silent or ambiguous
  • exact ordering across different files is best effort
  • no filtering, highlighting, panes, JSON output, or TUI
  • discovery is limited to the input set provided at startup