Le runtime PHP de Function Compute permet d'écrire des journaux depuis le code de votre fonction selon deux méthodes : le module logger intégré et les fonctions de sortie PHP standard. Cette rubrique explique comment utiliser chaque approche et consulter les journaux après l'exécution d'une fonction.
Affichage des journaux
Utiliser le logger intégré
Pour les fonctions utilisant un runtime intégré, accédez au logger via la variable globale $GLOBALS['fcLogger']. Les journaux sont automatiquement transférés vers le Logstore Simple Log Service (SLS) spécifié lors de la création du service.
Chaque entrée de journal suit la structure suivante :
YYYY-MM-DD HH:MM:SS <requestId> [LEVEL] message
Exemple :
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
Le logger intégré ajoute automatiquement un horodatage, un ID de requête et un niveau de journal à chaque entrée. Les fonctions de sortie PHP standard (présentées dans la section suivante) n'incluent pas ces métadonnées.
L'exemple suivant génère deux entrées de journal au niveau INFO par défaut, puis élève le niveau à CRITICAL (500) afin de supprimer les journaux INFO suivants :
<?php
function handler($event, $context) {
$logger = $GLOBALS['fcLogger'];
$logger->info('hello world');
$logger->critical('world hello');
$logger->setLevel(500);
$logger->info('hello world 2'); // suppressed -- below CRITICAL threshold
$logger->critical('world hello 2');
return 'hello world';
}
Sortie attendue :
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [INFO] hello world
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello
2024-01-04 10:50:44 1-659xxxxx-16cxxxxx-39659xxxxxx [CRITICAL] world hello 2
\nFC Invoke End RequestId: 1-659xxxxx-16cxxxxx-39659xxxxxx
Le message hello world 2 n'apparaît pas car, après l'appel à setLevel(500), le logger émet uniquement les messages de niveau CRITICAL (500) ou supérieur.
Niveaux de journal
Appelez $logger->setLevel(<numeric_level>) pour contrôler les messages émis. Les messages dont le niveau est inférieur au niveau actif sont ignorés. Le niveau par défaut est INFO (200).
| Niveau de journal | Valeur numérique | Interface | Cas d'utilisation |
|---|---|---|---|
| EMERGENCY | 600 | $logger->emergency |
Système inutilisable nécessitant une intervention immédiate |
| ALERT | 550 | $logger->alert |
Composant critique hors service ; action corrective requise sans délai |
| CRITICAL | 500 | $logger->critical |
Défaillance grave exigeant une attention urgente |
| ERROR | 400 | $logger->error |
Échec d'une opération n'ayant pas pu aboutir |
| WARNING | 300 | $logger->warning |
Situation inattendue survenue sans interruption de l'exécution |
| NOTICE | 250 | $logger->notice |
Événement normal mais significatif méritant un suivi |
| INFO | 200 | $logger->info |
Messages opérationnels généraux ; niveau par défaut |
| DEBUG | 100 | $logger->debug |
Informations de diagnostic détaillées pour le développement et le dépannage |
Utiliser les fonctions de sortie PHP standard
Si votre fonction n'utilise pas un runtime intégré, recourez aux fonctions de sortie PHP standard. Contrairement au logger intégré, cette méthode affiche uniquement le contenu brut : aucun horodatage, ID de requête ou niveau de journal n'est ajouté.
<?php
function handler($event, $context) {
var_dump("abcd");
echo "abcd 2\n";
fwrite(STDERR, "error\n");
return 'hello world';
}
Sortie attendue :
FunctionCompute php7.2 runtime inited.
FC Invoke Start RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
/code/index.php:4:
string(4) "abcd"
abcd 2
error
\nFC Invoke End RequestId: 1-659xxxxx-165xxxxx-455a04xxxxxx
Toute fonction écrivant sur la sortie standard ou l'erreur standard fonctionne de la même manière.
Consulter les journaux
Après l'exécution d'une fonction, ouvrez-la dans la console Function Compute et accédez à l'onglet Logs de la page Function Details. Pour filtrer et interroger les journaux sur plusieurs invocations, consultez Consultation des journaux d'invocation.