Aller au contenu

Formats

mime-logger vous permet de contrôler l’apparence de chaque ligne de log : utilisez un des quatre présets intégrés, écrivez une chaîne de format avec des tokens, ou fournissez une FormatFn entièrement personnalisée.

Importez Formats et passez un préset à opts.format :

import Logger, { Formats } from "mime-logger";
const logger = new Logger("app", { format: Formats.pretty });
ChampTypeRequisDescription
Formats.prettyFormatFnoptionnelPar défaut. Horodatage atténué, badge de niveau coloré, nom en jaune entre parenthèses, message coloré.
Formats.minimalFormatFnoptionnelNiveau complété à 5 caractères, nom atténué, message brut. Sortie compacte pour processus unique.
Formats.detailedFormatFnoptionnelFichier:ligne de l'appelant préfixé, horodatage ISO. Idéal pour déboguer les emplacements de pile.
Formats.jsonFormatFnoptionnelJSON structuré : { timestamp, level, name, message }. À piper vers des agrégateurs de logs.
import Logger, { Formats } from "mime-logger";
for (const preset of ["pretty", "minimal", "json"] as const) {
console.log(`-- ${preset} --`);
const logger = new Logger("app", { format: Formats[preset] });
logger.info("Server started on port 3000");
}
Format presets output

Passez une chaîne au lieu d’une FormatFn pour utiliser la substitution de tokens. Utile pour des mises en page personnalisées simples sans écrire de fonction.

const logger = new Logger("api", {
format: "{time} [{level}] {name} — {message}",
});
ChampTypeRequisDescription
{time}stringoptionnelHeure localisée avec millisecondes : [HH:MM:SS.mmm]
{date}stringoptionnelChaîne de date localisée.
{iso}stringoptionnelHorodatage ISO 8601.
{level}stringoptionnelNom du niveau : info | warn | error.
{name}stringoptionnelNom du logger (chaîne vide si sans nom).
{message}stringoptionnelLe message de log.
{pid}stringoptionnelID du processus courant.
{env}stringoptionnelNODE_ENV ou "production" par défaut.
{file}stringoptionnelNom du fichier source de l'appelant.
{line}stringoptionnelNuméro de ligne de l'appelant.
{function}stringoptionnelNom de la fonction de l'appelant.
{caller}stringoptionnelUne frame au-dessus de la fonction appelante.
%sstringoptionnelEspace réservé d'interpolation pour les arguments supplémentaires.

Pour un contrôle total, fournissez une FormatFn. Elle reçoit un FormatObject et une instance de ColorHelpers.

import Logger, { type FormatFn } from "mime-logger";
const myFormat: FormatFn = (obj, c) => {
const ts = c.dim(obj.timestamp.toISOString());
const level = obj.level.toUpperCase().padEnd(5);
const name = obj.name ? ` ${c.cyan(obj.name)}` : "";
return `${ts} ${level}${name} ${obj.message}`;
};
const logger = new Logger("app", { format: myFormat });
interface FormatObject {
message: string;
name?: string;
timestamp: Date;
level: LogLevel;
args: any[];
}
interface ColorHelpers {
red: (s: string) => string;
yellow: (s: string) => string;
blue: (s: string) => string;
green: (s: string) => string;
cyan: (s: string) => string;
magenta: (s: string) => string;
gray: (s: string) => string;
bold: (s: string) => string;
dim: (s: string) => string;
}

Les fonctions de couleur sont alimentées par ansis et suppriment automatiquement les codes ANSI lors de l’écriture vers des sorties non-TTY (ex. : fichiers).