Skip to content

Logs & parseurs ​

Les logs d'un service arrivent en direct dans son panneau, filtrables par niveau et par texte. Vous pouvez vider l'affichage, ou l'exporter.

Au-delà du stdout/stderr du processus, un service peut lire un fichier, une base MongoDB ou MySQL : voir Sources de logs.

Niveaux ​

Le niveau est déduit du texte de la ligne :

NiveauReconnu à
fatalfatal, FATAL
errorerror, ERROR, ERR
warnwarn, WARN, WARNING
debugdebug, DEBUG, DBG
infoinfo, INFO, INF

Sans motif reconnu, une ligne de stderr est error, une ligne de stdout info.

Parseurs ​

Un parseur est une fonction JavaScript qui reçoit une ligne et en rend une autre. Plusieurs parseurs s'enchaînent, dans l'ordre où vous les rangez : chacun reçoit ce que le précédent a produit.

typescript
interface LogLine {
  raw: string       // le texte d'origine, inchangeable
  stream: string    // 'stdout' | 'stderr', inchangeable
  level: string     // le niveau, modifiable
  message: string   // ce qui s'affiche, modifiable
  hidden: boolean   // passer à true pour masquer la ligne
  metadata: object  // ce que vous voulez y attacher
  json?: object     // présent si le parseur intégré JSON (native:json) s'est exécuté avant
}

Rendez la ligne telle quelle quand votre parseur ne s'applique pas.

Lire du JSON structuré ​

Pour du winston, du pino, ou tout log en JSON :

javascript
(line) => {
  if (!line.json) return line
  return {
    ...line,
    level: line.json.level ?? line.level,
    message: line.json.msg ?? line.json.message ?? line.raw,
    metadata: { service: line.json.service, trace: line.json.trace },
  }
}

Masquer le bruit ​

javascript
(line) => line.raw.includes('GET /health') ? { ...line, hidden: true } : line

Ce qu'un parseur peut et ne peut pas ​

Il s'exécute dans un environnement isolé et n'a accès qu'à RegExp, String, Object, Array, JSON, Math et Date. Il ne peut pas utiliser require, lire des fichiers ou accéder au réseau. Il dispose de 50 ms par ligne. Une ligne qui dépasse ce délai passe sans changement. Après 10 dépassements consécutifs, le parseur est désactivé. En cas d'erreur, la ligne passe sans changement au parseur suivant.

En sortie, le message est tronqué à 16 Ko et les métadonnées à 100 clés.

Attacher un parseur ​

Les parseurs se définissent dans Paramètres → Parseurs de logs, et s'attachent à un service depuis son onglet Parseurs de logs, dans l'ordre d'exécution voulu.

Un parseur partagé s'exécute chez vos collègues ​

Un parseur appartient à l'organisation du projet ouvert et se synchronise avec ses membres. Ainsi, les logs d'un service partagé restent lisibles chez eux. Sans projet cloud ouvert, un parseur reste sur votre poste.

Le modifier change donc le code qui tourne sur les machines de l'équipe. L'écran des réglages indique à qui appartient chaque parseur.

Runeya