dennisvanbeersel/symfony-logger-client
flush_budget config (default 2.0s): bounds the post-response telemetry drain
(kernel.terminate / CLI __destruct) to min(timeout, flush_budget) of real
wall-clock time. The default matches the previous hardcoded terminate cap, so
delivery behavior is unchanged. Lower it (e.g. 0.5) to harden a FrankenPHP
worker pool against a slow collector — this is the opt-in worker-mode safety knob.
ApiClient::getLogCircuitBreakerState() to expose the log-aggregation breaker state
independently of the error/session breaker.
excluded_channels config (default ['http_client','console','deprecation','doctrine']) to control which Monolog channels are aggregated.
error_tracking_enabled / log_aggregation_enabled config toggles (default true) for logs-only / errors-only operation.
application-logger:test console command and ApiClient::sendLogSync() for collector connectivity smoke-testing.
Dedicated application_logger_internal Monolog channel for the bundle's own diagnostics (always excluded from aggregation).
Publishable-key browser ingest (2.1.0): new publishable_key config node — the
world-readable browser credential. buildConfig() now emits publishableKey only (never
the secret api_key). The JS SDK posts browser errors to /api/v1/js-errors with
X-Publishable-Key + ?pk=, and the unload beacon flushes to the recovery-session
endpoint with a publishableKey body field.
flushPendingResponses): sustained logging to a
healthy-but-slow collector can no longer false-trip the breaker mid-request.__destruct drain cap changed from a hardcoded min(timeout, 1.0) to
min(timeout, flush_budget) (default ⇒ up to 2.0s; more delivery time on CLI, which
has no worker pool to saturate).http_client/console/deprecation/doctrine, stopping log self-amplification at capture_level: info in http_client-heavy apps. The bundle's own self-diagnostics now log on the internal channel (JS-config advisories downgraded from error to warning).api_key is now documented SERVER-only (2.1.0): sent as X-Api-Key → /api/v1/errors,
never injected into the browser. validateConfiguration() required fields are now
['dsn', 'publishable_key'].api_key into HTML (2.1.0). The inline SDK
config carries only the write-only publishable key; a hard-strip backstop removes any
secret-shaped field (apiKey/api_key/logToken/log_token) before json_encode.capture_level: info with log aggregation and rely on aggregating
http_client/console/deprecation/doctrine channel records, set
application_logger.excluded_channels to fewer entries (e.g. []).dennisvanbeersel/symfony-logger-client to applogger/symfony-bundle.
Update your composer.json require constraint accordingly:
composer require applogger/symfony-bundle
applogger/sdk-core: ^1.0. Error
capture routes through the SDK Hub; log aggregation routes through LogClient;
session tracking is retained unchanged.ApiClient is now a deprecated compatibility facade. It remains functional but
will be removed in a future major version. Inject the SDK Hub and LogClient
directly for new code.log_path, log_batch_size, max_log_buffer,
endpoint_path, retry_attempts, async, circuit_breaker.enabled) are
accepted but no-ops; the SDK core owns these concerns. Remove them from your
config to silence deprecation notices.composer require dennisvanbeersel/symfony-logger-client to
composer require applogger/symfony-bundle in all composer.json files and
CI scripts.ApplicationLogger\Bundle\ is unchanged.async: true,
the default) the outbound HTTP send is now driven to completion after the
response has already been sent to the client, via a kernel.terminate listener
(FlushTelemetrySubscriber, priority -1024). This guarantees telemetry delivery
in per-request SAPIs (PHP-FPM, FrankenPHP non-worker mode, the PHP built-in
server) where fire-and-forget requests could previously be aborted by garbage
collection before a single byte was transmitted. The host request is never
delayed (~0ms added). A bounded __destruct fallback delivers telemetry in
CLI / Messenger-worker contexts that have no kernel.terminate event.async: true no longer risks a request deadlock, because the
send completes after the response is flushed and the platform's ingestion is
disconnect-safe (async message processing).^6.4|^7.0|^8.0 (Symfony 8 support) for
symfony/framework-bundle, symfony/http-kernel, symfony/http-client and
symfony/uid.log_endpoint, log_token, capture_level, batching behaviour, the
LogEntry contract and the 202 success response.monolog.yaml handler entry is required.ExceptionSubscriber for automatic exception captureApplicationLoggerHandler for Monolog integrationBreadcrumbCollector for tracking user actions leading up to errorsContextCollector for gathering request, server, and user contextCircuitBreaker for resilience against API failuresApiClient for sending errors to the Application Logger platformHow can I help you explore Laravel packages today?