senzidee / monolog-parseable-handler
Monolog Handler for send logs to parseable in json through http
1.0.2
2025-06-09 19:39 UTC
Requires
- php: >=8.1
- ext-curl: *
- monolog/monolog: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.75
- guzzlehttp/guzzle: ^7.4.5
- guzzlehttp/psr7: ^2.2
- php-mock/php-mock: ^2.6
- phpunit/phpunit: ^10.5
- vimeo/psalm: *
README
A PHP library that provides a Monolog handler for sending logs to Parseable - a cloud-native log analytics platform.
Features
- Clean Architecture: Built with dependency injection and hexagonal architecture principles
- PSR-3 Compliant: Fully compatible with PSR-3 logging standards through Monolog
- Batch Processing: Supports both individual and batch log processing
- Configurable: Flexible configuration for different Parseable instances
- Type Safe: Full PHP 8.1+ type declarations with Psalm static analysis
- Testable: Comprehensive test suite with mocked dependencies
Requirements
- PHP 8.1 or higher
- ext-curl
- Monolog 3.0+
Installation
Install via Composer:
composer require senzidee/monolog-parseable-handler
Quick Start
<?php use Monolog\Logger; use SenzaIdee\Handler\ParseableHandler; // Create the handler $handler = new ParseableHandler( host: 'https://your-parseable-instance.com', stream: 'application-logs', username: 'your-username', password: 'your-password', port: 8000 ); // Create logger and add handler $logger = new Logger('app'); $logger->pushHandler($handler); // Start logging $logger->info('Application started'); $logger->error('Something went wrong', ['error_code' => 500]);
Configuration
Constructor Parameters
The ParseableHandler
constructor accepts the following parameters:
Parameter | Type | Required | Default | Description |
---|---|---|---|---|
host |
string |
Yes | - | Parseable server hostname (without trailing slash) |
stream |
string |
Yes | - | Target log stream name |
username |
string |
Yes | - | Authentication username |
password |
string |
Yes | - | Authentication password |
port |
int |
No | 8000 |
Parseable server port |
level |
Level|int|string |
No | Level::Debug |
Minimum log level to handle |
bubble |
bool |
No | true |
Whether to bubble logs to next handler |
httpClient |
HttpClientInterface |
No | null |
Custom HTTP client (uses cURL by default) |
Example Configurations
Basic Configuration
$handler = new ParseableHandler( host: 'https://logs.company.com', stream: 'api-logs', username: 'api-user', password: 'secure-password' );
Production Configuration
$handler = new ParseableHandler( host: 'https://prod-logs.company.com', stream: 'production-app', username: $_ENV['PARSEABLE_USERNAME'], password: $_ENV['PARSEABLE_PASSWORD'], port: 443, level: Level::Warning, // Only log warnings and above bubble: false );
For more advanced usage examples, see USAGE.md.
Development
Local Development with Docker
If you don't have PHP installed locally, use the provided Docker setup:
# Build the development container docker build -t parseable-handler-dev . # Run commands in container docker run --rm -v $(pwd):/app parseable-handler-dev composer install docker run --rm -v $(pwd):/app parseable-handler-dev composer test
Available Commands
# Install dependencies composer install # Run tests composer test # Fix code style composer cs-fixer # Run static analysis composer psalm # All quality checks composer test && composer cs-fixer && composer psalm
For detailed development information, see DEVELOPMENT.md.
Contributing
We welcome contributions! Please see CONTRIBUTING.md for details on how to contribute to this project.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Issues: GitHub Issues
- Documentation: Parseable Documentation
- Monolog: Monolog Documentation