Skip to main content
Cette documentation décrit comment configurer la journalisation avec le package AppSignal for PHP.

Configurer la journalisation

🔐 N’envoyez pas d’informations personnelles identifiables (PII) à AppSignal. Filtrez les PII (par exemple, noms, e-mails) des journaux et utilisez un identifiant, un hash ou un identifiant pseudonymisé à la place.

Pour les entités couvertes par la HIPAA, plus d’informations sur la signature d’un Business Associate Agreement (BAA) sont disponibles dans notre documentation Business Add-Ons.
Vous n’avez pas besoin de créer une source de journaux pour envoyer des journaux depuis l’intégration AppSignal for PHP. Une source de journaux “application” sera créée automatiquement. Le package AppSignal for PHP utilise les capacités de journalisation d’OpenTelemetry pour envoyer des journaux à AppSignal.

Laravel

Si vous utilisez le framework Laravel, le package AppSignal for PHP envoie automatiquement vos journaux à AppSignal. Vous n’avez pas besoin de configurer Monolog directement.

Symfony

Si vous utilisez le framework Symfony, la façon la plus simple d’envoyer des journaux à AppSignal est d’utiliser le MonologBundle. Installez le package d’auto-instrumentation Monolog.
Shell
composer require open-telemetry/opentelemetry-logger-monolog
Ajoutez une définition de service pour 'appsignal.monolog.handler' qui utilise la classe Appsignal\Integrations\Monolog\Handler.
config/services.yaml
services:
  # ... other services

  appsignal.monolog.handler:
    class: Appsignal\Integrations\Monolog\Handler
    factory: ['Appsignal\Integrations\Monolog\Handler', "withLevel"]
    arguments: ["info"] # configure log level that will reach AppSignal
Ajoutez appsignal.monolog.handler à la pile de handlers Monolog.
config/packages/monolog.yaml
monolog:
  handlers:
    # other handlers

    appsignal:
      type: service
      id: appsignal.monolog.handler
      channels: ["app", "event"] # configure which channels to send to AppSignal

Monolog

Monolog est la bibliothèque de journalisation la plus populaire pour PHP. Vous pouvez utiliser Monolog directement pour envoyer des journaux à AppSignal. Installez le package d’auto-instrumentation Monolog.
Shell
composer require open-telemetry/opentelemetry-logger-monolog
Puis ajoutez Appsignal\Integrations\Monolog\Handler à la pile de handlers Monolog.
PHP
use Appsignal\Integrations\Monolog\Handler;
use Monolog\Logger;

$logger = new Logger('app');
$logger->pushHandler(Handler::withLevel('info'));

$logger->info('My log message');

Utilisation autonome

Vous pouvez également envoyer des journaux avec le logger autonome en utilisant la méthode d’assistance log de la classe de base Appsignal. Cette méthode ne nécessite pas de configuration.
PHP
use Appsignal\Appsignal;
use Appsignal\Severity;

// Log a message
Appsignal::log(
	message: 'Log message line',
	severity: Severity::INFO,
	loggerName: 'my-app',
	attributes: [
		'customer_id' => $customer->id,
	],
);
Configurez Monolog avec le handler OpenTelemetry pour envoyer des journaux à AppSignal :
PHP
use Appsignal\Integrations\Monolog\Handler;
use Monolog\Logger;

// Create Monolog logger with the AppSignal handler
$logger = new Logger('app', [Handler::withLevel('info')]);

Envoi de journaux

Monolog

En utilisant Monolog, vous pouvez définir le niveau de sévérité de vos journaux :
PHP
$logger->warning("Something's gone terribly wrong here");
$logger->info('User action completed successfully');
$logger->error('Database connection failed');

// using Laravel's Log facade
Log::warning("Something's gone terribly wrong here");
Log::info('User action completed successfully');
Log::error('Database connection failed');
Vous pouvez définir des attributs personnalisés pour envoyer des informations de journal qui peuvent être utilisées lors du filtrage et de l’interrogation des journaux :
PHP
$logger->info('Generating invoice for customer', ['customer_id' => $customer->id]);

// using Laravel's Log facade
Log::info('Generating invoice for customer', ['customer_id' => $customer->id]);

Logger autonome

En utilisant le logger autonome, vous pouvez définir le niveau de sévérité de vos journaux :
PHP
use Appsignal\Appsignal;
use Appsignal\Severity;

// Different severity levels
Appsignal::log(
	message: "Something's gone terribly wrong here",
	severity: Severity::WARN,
);

Appsignal::log(
	message: 'User action completed successfully',
	severity: Severity::INFO,
);

Appsignal::log(
	message: 'Database connection failed',
	severity: Severity::ERROR,
);
Vous pouvez définir des attributs personnalisés pour envoyer des informations de journal qui peuvent être utilisées lors du filtrage et de l’interrogation des journaux :
PHP
use Appsignal\Appsignal;
use Appsignal\Severity;

function processInvoice($customer) {
	Appsignal::log(
		message: 'Generating invoice for customer',
		severity: Severity::INFO,
		attributes: ['customer_id' => $customer->id],
	);
}

Filtrage des journaux

Vous pouvez interroger et filtrer le contenu des messages et les valeurs d’attribut depuis l’outil Log Management. Une fois configurés, les attributs souhaités seront envoyés à AppSignal en tant que tags de journal, et seront interrogeables dans l’interface de journalisation d’AppSignal.

Journalisation structurée

AppSignal prend en charge la journalisation structurée de manière native. Vous pouvez envoyer des données structurées en tant qu’attributs de journal :
PHP
use Appsignal\Appsignal;
use Appsignal\Severity;

Appsignal::log(
	message: 'User action completed',
	severity: Severity::INFO,
    attributes: [
		'user_id' => $userId,
		'action' => 'purchase',
		'product_id' => $productId,
		'amount' => $amount,
		'currency' => 'USD'
	],
);

// or using Monolog
$logger->info('Generating invoice for customer', ['customer_id' => $customer->id]);

// or using Laravel's Log facade
Log::info('Generating invoice for customer', ['customer_id' => $customer->id]);
Vous pouvez également configurer AppSignal for PHP pour ignorer des lignes de journal spécifiques en utilisant l’option ignore_logs. Consultez notre guide Ignore Logs pour en savoir plus.

Besoin d’aide ?

Après avoir configuré votre application PHP pour envoyer des journaux, les journaux devraient apparaître dans AppSignal. Si vous avez des doutes sur cette étape ou si AppSignal ne reçoit aucun journal, vous pouvez toujours nous contacter pour obtenir de l’aide. Nous vous aiderons à remettre les choses sur la bonne voie !