ascriver / debugview
A custom Monolog handler for Windows DebugView.
Requires
- php: >=8.1
- monolog/monolog: ^3.5
Requires (Dev)
- phpunit/phpunit: ^11.4
- roave/security-advisories: dev-latest
README
DebugView is a custom Monolog handler that sends log messages to the Windows DebugView utility using the OutputDebugStringA
function from the Windows API.
Features
- Integrates with Monolog for logging.
- Sends log messages directly to DebugView for real-time debugging on Windows systems.
- Lightweight and easy to use.
Installation
To install the package, use Composer:
composer require ascriver/debugview
Usage
Here is an example of how to use the DebugViewHandler
in your project:
use Monolog\Logger; use Ascriver\DebugViewHandler; // Create a logger instance $logger = new Logger('debug'); // Add the DebugViewHandler $logger->pushHandler(new DebugViewHandler()); // Log a message $logger->debug('This is a debug message');
Requirements
- PHP 8.1 or higher
- Windows operating system (required for OutputDebugStringA)
- FFI must be enabled in your PHP configuration (php.ini):
⚠️ If FFI is disabled or restricted (e.g., in some shared hosting environments), this handler will not function correctly.
Development
Running Tests
This project uses PHPUnit for testing. To run the tests, first install the dependencies:
composer install
Then, run the tests:
vendor/bin/phpunit
Project Structure
src/
: Contains the main source code, including theDebugViewHandler
class.tests/
: Contains unit tests for the project.composer.json
: Defines the project dependencies and autoloading configuration.
Testing Notes
The DebugViewHandlerTest
includes a test for the write
method, which uses PHP's FFI
to mock the OutputDebugStringA
function. Reflection is used to inject the mock into the handler.
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Write tests for your changes.
- Submit a pull request.
License
This project is licensed under the MIT License. See the LICENSE file for details.