Aller au contenu principal

Utilisation

Initialiser​

Kino.init() s'appelle une seule fois, au démarrage. Un second appel lève une erreur, et les méthodes de log lèvent une erreur tant qu'il n'a pas été appelé.

import Kino from '@fca.gg/kino';

Kino.init({
locale: 'fr-FR',
defaultIntanceTitle: 'BOT',
});
  • locale (défaut : 'en-US') : langue du format de date des lignes.
  • defaultIntanceTitle (défaut : 'GLOBAL') : nom du logger global. L'option s'écrit bien ainsi, sans « s ».
  • sentry, packages, ANR, autoCaptureUnhandledRejections : voir Sentry.

Niveaux​

Chaque niveau écrit sur la sortie correspondante de la console, avec sa couleur :

  • log (cyan) et success (vert) : console.log ;
  • info (blanc) : console.info ;
  • warn (jaune) : console.warn ;
  • error (rouge) : console.error ;
  • debug (bleu) : console.debug.

Chaque ligne est préfixée par la date, le module et le niveau :

[24/09/2026 18:02:11 - Commands - WARN] Commande inconnue : /pnig

Les méthodes acceptent plusieurs valeurs : chacune est écrite sur sa ligne, et les objets sont affichés en détail (sur trois niveaux de profondeur).

Kino.warn('Réponse inattendue', {status: 429, retryAfter: 2});

Logger global et loggers par module​

Les méthodes statiques utilisent le logger global :

Kino.info('Connecté à la gateway');
Kino.error(new Error('Échec de la connexion'));

Pour savoir d'où vient une ligne, créez un logger par module. Son nom remplace celui du logger global dans le préfixe, et sert de tag module dans Sentry :

const logger = new Kino('Database');

logger.debug('Requête exécutée en 12 ms');

KinoLoggedClass​

Une classe qui étend KinoLoggedClass reçoit une propriété logger protégée, nommée d'après la classe, disponible dans les méthodes statiques comme dans celles d'instance :

import {KinoLoggedClass} from '@fca.gg/kino';

class TicketManager extends KinoLoggedClass {
public open(userId: string) {
this.logger.info(`Ticket ouvert pour ${userId}`); // module "TicketManager"
}

public static cleanup() {
this.logger.warn('Nettoyage des tickets expirés');
}
}

Le logger est créé au premier accès, puis partagé par toute la classe.

Erreurs​

error() écrit l'erreur et, si Sentry est configuré, l'envoie avec le module en tag. Un second argument ajoute du contexte :

logger.error(error, {
tags: {command: 'ban'},
extras: {guildId: interaction.guildId},
user: {id: interaction.user.id, username: interaction.user.username},
});

Tracer une opération​

trace(uid) renvoie une fonction à passer en gestionnaire d'erreur. Elle envoie l'erreur avec un tag trace_uid, pour retrouver dans Sentry toutes les erreurs d'une même opération :

const onError = logger.trace(interaction.id, {tags: {command: 'ban'}});

await member.ban().catch(onError);

La version statique, Kino.trace(uid), ne prend pas de contexte.