https://github.com/opentelemetry-php/contrib-logger-monolog
[READONLY] Monolog v3 handler for OpenTelemetry
https://github.com/opentelemetry-php/contrib-logger-monolog
Last synced: 7 months ago
JSON representation
[READONLY] Monolog v3 handler for OpenTelemetry
- Host: GitHub
- URL: https://github.com/opentelemetry-php/contrib-logger-monolog
- Owner: opentelemetry-php
- Created: 2023-04-12T13:36:59.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T02:40:11.000Z (about 1 year ago)
- Last Synced: 2024-11-14T16:49:57.878Z (8 months ago)
- Language: PHP
- Size: 25.4 KB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/opentelemetry-php/contrib-logs-monolog/releases)
[](https://github.com/open-telemetry/opentelemetry-php/issues)
[](https://github.com/open-telemetry/opentelemetry-php-contrib/tree/main/src/Logs/Monolog)
[](https://github.com/opentelemetry-php/contrib-logger-monolog)
[](https://packagist.org/packages/open-telemetry/opentelemetry-logger-monolog/)
[](https://packagist.org/packages/open-telemetry/opentelemetry-logger-monolog/)This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
# OpenTelemetry Monolog handler
A monolog handler for OpenTelemetry. See https://opentelemetry.io/docs/instrumentation/php/manual/#logs for further documentation.
## Requirements
### API + SDK
This package depends on the OpenTelemetry API, but a configured [OpenTelemetry SDK](https://opentelemetry.io/docs/instrumentation/php/sdk/) should also be provided.
### Exporter
Usually logs are exported to a `receiver` via the `otlp` protocol in the `protobuf` format, via http or `gRPC`.
This requires:
- a `protobuf` implementation; either the protobuf extension or the `google/protobuf` package
- the `open-telemetry/exporter-otlp` package
- the `open-telemetry/transport-grpc` package, if using gRPC transport
- a PSR-7 and PSR-18 implementation, if using HTTP transport### Receiver
Logs must be emitted to a receiver/system that understands the OpenTelemetry protocol, such as the [OpenTelemetry collector](https://opentelemetry.io/docs/collector/).## Installation
```shell
composer require open-telemetry/opentelemetry-logger-monolog
```## Usage
The OpenTelemetry handler, configured with an OpenTelemetry `LoggerProvider`, is used to send Monolog `LogRecord`s to OpenTelemetry.
The `LoggerProvider` can be configured in a number of ways: manually, via an SDK Builder, or automatically (using environment/php.ini variables).
### Manual configuration
Set up an SDK LoggerProvider and pass it to the handler:
```php
$loggerProvider = new \OpenTelemetry\SDK\Logs\LoggerProvider(/* params */);
$handler = new \OpenTelemetry\Contrib\Logs\Monolog\Handler(
$loggerProvider,
'info',
true,
);
```### Automatic configuration
If you use [OpenTelemetry SDK autoloading](https://opentelemetry.io/docs/instrumentation/php/sdk/#autoloading), you can retrieve the global logger
provider. That may be a no-op implementation if there was any misconfiguration.See [autoload-sdk example](./example/autoload-sdk.php) for how to use autoloading with the OpenTelemetry SDK.
### Create a Logger
Finally, add the handler to a Monolog logger:
```php
$logger = new \Monolog\Logger(
'name',
[$handler],
);
$logger->info('hello world');
```