Search by

ez-php / log-transport

AU9500

Async/remote log shipping (ELK, Datadog, Loki) drivers for ez-php/logging

Package info

github.com/ez-php/log-transport

pkg:composer/ez-php/log-transport

Statistics

Installs: 27

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.5.6 2026-09-30 18:37 UTC

README

Async/remote log shipping (ELK, Datadog, Loki) drivers for ez-php/logging.

Installation

composer require ez-php/log-transport

Usage

use EzPhp\LogTransport\CurlHttpSender;
use EzPhp\LogTransport\HttpTransportDriver;
use EzPhp\LogTransport\NdjsonPayloadFormatter;

$driver = new HttpTransportDriver(
    endpoint: 'https://logs.example.com/ingest',
    sender: new CurlHttpSender(),
    formatter: new NdjsonPayloadFormatter(),
    batchSize: 50,
    headers: ['Authorization' => 'Bearer ...'],
);

$driver->log('error', 'Something failed', ['user_id' => 42]);
// ... auto-flushes once batchSize entries are buffered; call $driver->flush() manually
// (e.g. at request shutdown) to ship a partial batch.

Payload formats

Formatter Target Shape
NdjsonPayloadFormatter (default) Elasticsearch/OpenSearch bulk-style intake, generic HTTP collectors One JSON object per line
LokiPayloadFormatter Grafana Loki push API {"streams":[{"stream":{labels...},"values":[[nanoTs, line], ...]}]}, grouped one stream per level
DatadogPayloadFormatter Datadog Logs intake API JSON array of {"message","status","timestamp"(ms),"context":{...}} objects
SplunkHecPayloadFormatter Splunk HTTP Event Collector (/services/collector/event, header Authorization: Splunk <token>) Concatenated {"time","event":{"message","severity","context"}} objects; optional host/source/sourcetype/index
NewRelicPayloadFormatter New Relic Log API (/log/v1, header Api-Key) [{"common":{"attributes":{…}},"logs":[{"timestamp"(ms),"message","attributes":{"level","context"}}]}]
use EzPhp\LogTransport\LokiPayloadFormatter;

$driver = new HttpTransportDriver(
    endpoint: 'https://loki.example.com/loki/api/v1/push',
    sender: new CurlHttpSender(),
    formatter: new LokiPayloadFormatter(labels: ['service' => 'my-app', 'env' => 'production']),
);
use EzPhp\LogTransport\DatadogPayloadFormatter;

$driver = new HttpTransportDriver(
    endpoint: 'https://http-intake.logs.datadoghq.com/api/v2/logs',
    sender: new CurlHttpSender(),
    formatter: new DatadogPayloadFormatter(service: 'my-app', source: 'php'),
    headers: ['DD-API-KEY' => getenv('DATADOG_API_KEY')],
);

License

MIT