Jan 2026 · Open Source Package
A lightweight, terminal-first Laravel package designed to simplify debugging by reducing context switching and unnecessary noise.
Project Snapshot
-
Project Type: Open-source developer tool
-
Role: Package author & maintainer
-
Tech Stack: Laravel 12, PHP 8.2+, Symfony Console
-
Status: Actively maintained
-
Distribution: Packagist (
birenjung/log-watcher) -
Focus: Developer experience, debugging workflow, simplicity
Introduction
While working on multiple Laravel projects, I noticed a recurring issue during active debugging sessions:
debugging often breaks flow.
The usual loop looked like this:
-
Trigger a request
-
Use
dd()or dump data -
Switch to the browser
-
Go back to the editor
-
Repeat
Although dd() is extremely powerful, it halts execution and forces frequent screen switching—especially frustrating during intense debugging.
To solve this, I built Log Watcher, a small Laravel package that allows developers to observe application behavior in real time from the terminal, without stopping execution and without visual clutter.
The Problem
-
Excessive reliance on
dd()during development -
Constant switching between browser and editor
-
Noise from framework and system logs obscuring relevant information
-
tail -flacking Laravel channel awareness -
Existing tools being UI-heavy or opinionated
The Goal
Create a tool that:
-
Keeps developers inside the terminal
-
Makes debugging less disruptive
-
Focuses only on application logs
-
Respects Laravel’s logging channels
-
Stays minimal, predictable, and honest
My Approach
I designed the package around one core idea:
Make debugging calmer by removing unnecessary interruptions.
Instead of adding features, dashboards, or storage layers, I focused on:
-
Laravel-native behavior
-
Zero side effects
-
Clear defaults
-
Explicit control
The package acts as a channel-aware wrapper around Laravel’s logging system, optimized for real-time observation.
Core Features
1) Real-Time Log Watching
Developers can watch logs live directly from the terminal:
php artisan log:watch
This allows continuous observation without stopping the application.
2) Channel Awareness
Unlike raw tail -f, the package understands Laravel’s logging channels:
-
single -
daily -
stack(auto-resolved to file-based channels) -
Custom file-based channels
php artisan log:watch daily
3) Clean Mode (Default)
To reduce noise during debugging, clean mode hides:
-
Framework stack traces
-
Vendor paths
-
JSON exception noise
-
Empty lines
This keeps focus on what actually matters.
4) Full Mode (Optional)
For deeper inspection, developers can opt in to full output:
php artisan log:watch --full
Clean mode by default, verbosity by choice.
5) Semantic Colored Output
Log levels are automatically detected and colorized:
| Level | Color |
|---|---|
| DEBUG | Cyan |
| INFO | Blue |
| WARNING | Yellow |
| ERROR | Red |
This improves readability without requiring filters or UI.
Implementation Details
Backend (Laravel Package)
-
Built using Laravel’s Artisan command system
-
Symfony Console for robust CLI handling
-
Zero database usage
-
No log mutation or interception
-
Fully dev-only by design
Design Decisions
-
No configuration required to get started
-
No middleware, observers, or service side effects
-
No production footprint
-
Explicit opt-in for verbosity
dd() vs Log Watcher
dd() |
Log Watcher |
|---|---|
| Stops execution | Keeps app running |
| Browser-dependent | Terminal-only |
| Breaks flow | Preserves flow |
| One-time snapshot | Continuous insight |
| Blocks requests | Non-intrusive |
They serve different purposes—and work best together, not as replacements.
Results & Outcome
-
Smoother debugging workflow
-
Reduced reliance on browser-based debugging
-
Better focus during complex logic inspection
-
Positive feedback from early adopters
-
Successfully published and versioned via Packagist
The package is now used across multiple real-world Laravel projects during development.
Reflection
This project reinforced an important lesson:
Good developer tools don’t add power—they remove friction.
By deliberately keeping the scope small, I avoided feature creep and focused on solving one real problem well.
The result is a tool that fits naturally into existing workflows instead of trying to redefine them.
Technologies Used
| Category | Technologies |
|---|---|
| Language | PHP 8.2+ |
| Framework | Laravel 12 |
| CLI | Symfony Console |
| Distribution | Packagist |
| Version Control | Git, GitHub |
Project Links
-
Source Code:
https://github.com/birenjung/log-watcher -
Package Page:
https://packagist.org/packages/birenjung/log-watcher
Conclusion
Log Watcher is a small, focused Laravel package built with a clear philosophy:
Simplicity is the best style.
Honesty is the best policy.
It doesn’t try to replace existing tools.
It simply makes everyday debugging a little calmer and a lot less disruptive.