Documentation

Presets de templates de logs

Rendez des logs structurés avec des presets réutilisables et des surcharges locales.

Quand utiliser cet exemple

Utilisez ce pattern quand les services émettent des logs JSON ou logfmt structurés et que les lignes brutes sont trop bruitées pour le travail quotidien dans le terminal.

Exemple

[global]
log_mode = "both"
log_format = "json"

[log_templates.rust]
[log_templates.rust.fields]

[[log_templates.rust.fields.fields]]
key = "level"
prefix = "["
suffix = "]"
map = { info = "INFO", warn = "WARN", error = "ERROR" }
color = "gold"
color_rules = [
  { regex = "^ERROR$", color = "red" },
  { regex = "^WARN$", color = "yellow" },
  { regex = "^INFO$", color = "green" },
]

[[log_templates.rust.fields.fields]]
key = "fields.message"
color = "mintcream"

[log_templates.email]
[log_templates.email.fields]

[[log_templates.email.fields.fields]]
key = "level"
prefix = "["
suffix = "]"
map = { info = "INFO", warn = "WARN", error = "ERROR" }
color = "gold"

[[log_templates.email.fields.fields]]
key = "fields.message"
color = "mintcream"

[[log_templates.email.fields.fields]]
prefix = "to "
key = "fields.to"
color = "brown"

[global.log_template]
stdout_preset = "rust"
stderr_preset = "rust"

[[process]]
name = "api-public"
command = "./tools/run_service.sh api-public"

[[process]]
name = "notifications-email-send"
command = "./tools/run_service.sh notifications-email-send"

[process.log_template]
stdout_preset = "email"
stderr_preset = "email"

Pourquoi cela fonctionne

Le template global garde la plupart des services lisibles avec le même layout. Un processus précis peut lier un preset différent quand il expose des champs qui méritent un traitement particulier, comme un destinataire email.

Les logs fichiers conservent toujours la sortie brute du processus enfant. Les templates affectent seulement le rendu dans la console/TUI et l’historique.

Valeurs par défaut utiles ici

  • fields.separator : valeur effective par défaut " "
  • format sur un champ : valeur effective par défaut none
  • visible_if sur un champ : valeur effective par défaut always
  • preset, stdout_preset et stderr_preset : défaut aucun
  • process.log_template : hérite de global.log_template

Ce qu’il faut personnaliser

  • Remplacez les clés de champs par celles émises par votre logger.
  • Gardez un preset global simple pour la plupart des services.
  • Ajoutez des presets spécialisés seulement quand un service expose des champs vraiment utiles.
  • Utilisez color_rules pour des valeurs stables comme les niveaux ou codes de statut.

Voir aussi