AI Core
Référence de l’APILib : shared et fivem

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).

TypeScript
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

Signature
createLogger(resource: string): Logger

Lua : pas d’équivalent ; utilisez print(('[%s] %s'):format(GetCurrentResourceName(), message)).

Paramètres

Prop

Type

Retour

Logger :

Prop

Type

Exemple

resource/server/index.ts
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

Signature
logSafe(text: string, max: number): string

Lua : 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

Signature
previewJson(value: unknown, max: number): string

Lua : 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

resource/server/index.ts
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)}`);
}

Sur cette page