Journalisation
createLogger, logSafe et previewJson : des lignes de console au nom de votre ressource, et du texte non fiable rendu sûr à afficher.
Ces utilitaires écrivent dans la console (F8 sur un client, la console du serveur ou txAdmin sur le serveur). Pour les logs que le propriétaire du serveur lit dans Discord, Fivemanage ou FiveM Stats, utilisez plutôt aiLog (voir Journaux).
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";createLogger
Renvoie un logger dont les lignes commencent par [your-resource], pour que la console du serveur montre d’où vient chaque ligne. Les avertissements sont en jaune, les erreurs en rouge.
Côté : client, serveur et NUI · Attend : non
createLogger(resource: string): LoggerLua : pas d’équivalent ; utilisez print(('[%s] %s'):format(GetCurrentResourceName(), message)).
Paramètres
Prop
Type
Retour
Logger :
Prop
Type
Exemple
import { createLogger } from "@aicore-fivem/lib/shared";
const log = createLogger(GetCurrentResourceName());
log.info("loaded 12 shops"); // [my-shop] loaded 12 shops
log.warn("shop legion has no ped model"); // jaune
try {
JSON.parse("{");
} catch (error) {
log.error("could not read shops.json", error); // rouge, avec l’erreur
}logSafe
Rend un texte envoyé par un client sûr pour la console du serveur : une seule ligne (les retours à la ligne deviennent |), aucun caractère de contrôle, aucun code couleur ^1, coupé à max caractères. Utilisez-le dès qu’une ligne de log contient un texte de joueur (un nom, un message, une note).
Côté : client, serveur et NUI · Attend : non
logSafe(text: string, max: number): stringLua : pas d’équivalent.
Paramètres
Prop
Type
Retour
string : le texte nettoyé.
Exemple
import { logSafe } from "@aicore-fivem/lib/shared";
logSafe("^1fake error\nsecond line", 100); // "fake error | second line"Sans lui, un joueur peut écrire un message de chat avec des codes couleur ^1 et des retours à la ligne qui ressemble à une vraie erreur du serveur dans votre console.
previewJson
Un court texte façon JSON de n’importe quelle valeur non fiable, coupé à max caractères, construit sans sérialiser d’abord toute la valeur (une charge hostile peut peser des mégaoctets). Une imbrication de plus de 4 niveaux s’affiche [...] / {...}. Utilisez-le pour afficher ce qu’un client a envoyé quand vous le refusez.
Côté : client, serveur et NUI · Attend : non
previewJson(value: unknown, max: number): stringLua : pas d’équivalent.
Paramètres
Prop
Type
Retour
string : l’aperçu, au plus max caractères. Les clés d’objet sont coupées à 50 caractères.
Exemple
import { onClientEvent } from "@aicore-fivem/lib/server";
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";
const log = createLogger(GetCurrentResourceName());
onClientEvent("my-shop:rate", (source) => {
log.info(`${logSafe(GetPlayerName(String(source)) ?? "?", 32)} opened the rating`);
});
function refuse(source: number, raw: unknown[]): void {
log.warn(`refused input from ${source}: ${previewJson(raw, 200)}`);
}