Aller au contenu
Documentation : Journaux

Journaux

Ce que le serveur écrit, en JSON, et où le lire.

Décrit Ronne AI Marketplace 0.4.0. Traduite de l'anglais.

Journaux

Ronne écrit une ligne par événement sur sa sortie standard, en JSON : quand c'est arrivé, sa gravité, ce qui s'est passé et la requête à laquelle elle appartient. L'endroit où va cette sortie dépend de la façon dont Ronne tourne :

Ronne tourne commeSes journaux
Dockerdocker compose logs web (le pilote de journaux de Docker)
Un service Linuxsudo rmk-server service logs, ou journalctl -u rmk-server
Un service macOSsudo rmk-server service logs, ou /Library/Logs/rmk-server/server.log
npm ou un paquet avec Node.js intégré, sans servicele terminal qui lance rmk-server start
Un clonele terminal qui lance pnpm start, ou pnpm dev (en texte)

Une ligne ressemble à ceci :

{"time":"2026-10-14T14:03:22.417Z","level":"info","msg":"Released","domain":"submissions","event":"version.released","requestId":"01K7…","userId":"01J9…","count":3}
  • Toujours : time (UTC), level et msg, une courte phrase qui ne change jamais.
  • Quand ils s'appliquent : event, un nom stable pour chercher et alerter; domain, la partie de Ronne qui l'a écrite; requestId, la requête à laquelle elle appartient; userId, qui l'a faite (un identifiant, jamais un courriel ni un nom); err, le nom, le message et le code d'une erreur, avec sa pile au niveau error; avec le traçage actif, traceId et spanId, le span où elle a été écrite (Supervision).
  • Les champs propres à l'événement : des nombres, des décomptes et de courtes raisons, comme status ou count.
  • Les lignes de Better Auth (la bibliothèque de connexion) : msg vaut Better Auth, avec source et son texte dans detail.

LOG_LEVEL (debug, info, warn ou error; info par défaut) fixe la gravité minimale des lignes écrites : warn est ce que quelqu'un doit regarder, error une panne, et debug ajoute des détails dont personne n'a besoin au quotidien. Une valeur inconnue écrit un avertissement et utilise info. LOG_FORMAT vaut json, ou text pour une personne qui lit un terminal (par défaut avec pnpm dev). Réglez l'une ou l'autre dans le fichier de réglages ou l'environnement (avec Docker, dans le fichier .env à côté de compose.yaml, puis docker compose up -d), puis redémarrez Ronne.

Les événements :

ÉvénementNiveauQuandChamps
server.startedinfoLe serveur a démarré (avant l'installation, setup: required à la place de dialect)version, dialect, setup, runtime, port
server.migrations_appliedinfoDes changements de base de données ont été appliqués au démarragecount, latest
http.requestinfo (warn pour 429, error pour 5xx)Une requête à l'API a reçu sa réponsemethod, route, status, ms, userId
http.errorerrorUne erreur inattendueerr, route
auth.signed_ininfoQuelqu'un s'est connectéuserId
auth.sign_in_failedwarnUne connexion a échoué (via vaut cli pour rmk login; reason vaut two_factor_required quand rmk login a envoyé le bon mot de passe d'un compte qui a la connexion à deux facteurs)reason, via
auth.rate_limitedwarnTrop de connexions ou de demandes de jetonlimit
auth.two_factor_startedinfoQuelqu'un a commencé à configurer la connexion à deux facteursuserId
auth.two_factor_enabledinfoLa connexion à deux facteurs a été activéeuserId
auth.two_factor_disabledinfoLa connexion à deux facteurs a été désactivéeuserId
auth.two_factor_failedwarnUn code à deux facteurs a été refusé à la connexionreason (wrong_code, used, expired, too_many, locked, refused, unreadable)
token.exchangedinformk login, ou une approbation dans le navigateur, a reçu un jeton d'accèsuserId
token.rejectedwarnUn jeton d'accès a été refuséreason (unknown, revoked, expired, disabled)
version.releasedinfoDes versions ont été publiées (une ligne pour une publication en bloc)count, userId
version.yankedinfoUne version a été retiréeuserId
draft.uploadedinfoUn brouillon a été téléverséfiles, bytes
draft.upload_refusedwarnLe téléversement d'un brouillon a été refuséreason
upload.rate_limitedwarnTrop de téléversements ou de soumissionslimit
usage.rate_limitedwarnTrop de rapports d'utilisationlimit
submission.checks_failedwarnLes vérifications de Submit n'ont pas pu s'exécutererr
feed.builtinfo (debug depuis le cache)Un plugin feed a été construit, ou servi depuis le cache (cached, sans plugins ni ms)tool, plugins, ms, bytes, cached
feed.size_warningwarnUn plugin feed approche de sa taille limitetool, percent
feed.plugin_skippedwarnUn plugin a été laissé hors d'un plugin feedtool, reason
db.unavailableerrorLe contrôle de santé n'a pas joint la baseerr
storage.unavailableerrorLe contrôle de santé a trouvé le stockage non accessible en écritureerr
telemetry.startedinfoOpenTelemetry a démarré (Supervision)traces, metrics
telemetry.endpoint_invalidwarnLe point de terminaison OTLP n'est pas une URL http(s); la télémétrie reste désactivée
telemetry.failederrorOpenTelemetry n'a pas pu démarrer; le serveur démarre sans luierr
telemetry.verbose_offwarnNEXT_OTEL_VERBOSE est désactivé : les spans détaillés porteraient des noms privés
telemetry.export_failedwarnLe collecteur n'a pas pu être joint (au plus une fois par minute)signal
job.startedinfoUne tâche planifiée a démarré (Confidentialité : la purge de rétention)job
job.finishedinfoUne tâche planifiée s'est terminée, avec ce qu'elle a faitjob, ms, ipsCleared, emailsCleared, sessionsDeleted, grantsDeleted
job.skippeddebugUne autre exécution tient le verrou de la tâchejob, reason
job.failederrorUne tâche planifiée a échoué; la suivante aura lieu à l'heurejob, ms, err
log.level_invalidwarnLOG_LEVEL n'est pas un niveau; info est utilisé

Jamais dans une ligne : les mots de passe, les jetons d'accès, les cookies, AUTH_SECRET, le mot de passe d'une base, les courriels, les adresses IP des personnes, ni les noms des éléments, des portées et des espaces de travail (les noms d'un espace privé restent privés). Ronne ne les écrit pas, et son module de journalisation retire en plus ce qui pourrait s'y glisser, messages d'erreur compris : les champs nommés comme un secret, les jetons d'accès, les mots de passe dans les adresses, les courriels, les chemins des fichiers stockés et la valeur qu'une base cite dans une erreur de clé en double. Next.js affiche aussi lui-même une erreur inattendue, en texte brut à côté de la ligne de Ronne : ce texte est celui de Next.js, qui ne passe pas par le module de journalisation de Ronne. De même pour l'erreur que Better Auth (la bibliothèque de connexion) affiche quand la base elle-même échoue pendant une requête.

Signaler un problème : chaque réponse d'une page ou de l'API porte un en-tête X-Request-Id, et le message de l'API pour une erreur inattendue le cite. Donnez-le, et qui administre l'instance retrouve les lignes de cette requête par leur requestId. Derrière un proxy qui pose son propre X-Request-Id, Ronne le garde avec TRUST_PROXY=true, pour qu'un même identifiant suive la requête.