To integrate this package into a Laravel project, start by installing it via Composer:
composer require vendor/package-name
Publish the configuration files to customize the package settings:
php artisan vendor:publish --provider="Vendor\PackageName\PackageServiceProvider" --tag="config"
The package now supports OVH Graylog out-of-the-box. Ensure your config/gelf.php (or equivalent) includes the new header configuration for GELF requests:
'headers' => [
'X-Graylog-Header' => 'your-custom-value', // Example OVH-specific header
],
For parameter-based configuration, define values in config/parameters.yml (or your Laravel env equivalent) and reference them in the config file.
First use case: Send a GELF-formatted log to Graylog (including OVH-compatible headers):
use Vendor\PackageName\Facades\GelfLogger;
GelfLogger::log('Your log message', ['context' => 'data']);
config/gelf.php for static settings (e.g., Graylog host, port).parameters.yml or .env and reference them via:
'headers' => [
'X-Graylog-Header' => env('GRAYLOG_OVH_HEADER'),
],
config/gelf.php per environment (e.g., config/gelf-local.php).GelfLogger::error('Failed to process order', [
'order_id' => 123,
'user_id' => 456,
'exception' => $e,
]);
public function handle($request, Closure $next) {
$response = $next($request);
GelfLogger::info('Request completed', [
'path' => $request->path(),
'status' => $response->status(),
]);
return $response;
}
headers config key enables OVH-specific Graylog features. Example:
'headers' => [
'X-Graylog-Ext-Msg' => 'custom-ovh-metadata',
],
headers key will result in rejected logs. Validate with:
curl -X POST -H "X-Graylog-Header: your-value" http://graylog:12201/gelf
parameters.yml must match the config key names exactly. Use php artisan config:clear after updates to reload.gelf).APP_ENV aligns with your published config (e.g., gelf-local.php for development).public function __construct(\Vendor\PackageName\GelfLogger $logger) {
$this->logger = $logger;
}
headers array dynamically via service providers:
GelfLogger::extend(function ($app) {
$app['gelf.headers']['X-Custom'] = 'dynamic-value';
});
gelf.formatter.use Vendor\PackageName\Jobs\LogToGelf;
LogToGelf::dispatch('Message', ['data'])->onQueue('logs');
try {
GelfLogger::log($message);
} catch (\GuzzleHttp\Exception\RequestException $e) {
if ($e->getCode() === 429) {
sleep(2 ** $retryCount++);
retry();
}
}
short_message and full_message fields to separate OVH-specific metadata from logs.How can I help you explore Laravel packages today?