Logging
createLogger, logSafe e previewJson: linhas de console com o nome do seu recurso, e texto não confiável deixado seguro para imprimir.
Estes helpers escrevem no console (F8 em um cliente, o console do servidor ou o txAdmin no servidor). Para logs que o dono do servidor lê no Discord, Fivemanage ou FiveM Stats, use aiLog (veja Logs).
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";createLogger
Retorna um logger cujas linhas começam com [your-resource], para que o console do servidor mostre de onde veio cada linha. Avisos são amarelos, erros vermelhos.
Lado: Cliente, servidor e NUI · Espera: não
createLogger(resource: string): LoggerLua: sem equivalente; use print(('[%s] %s'):format(GetCurrentResourceName(), message)).
Parâmetros
Prop
Type
Retorno
Logger:
Prop
Type
Exemplo
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"); // amarelo
try {
JSON.parse("{");
} catch (error) {
log.error("could not read shops.json", error); // vermelho, com o erro
}logSafe
Deixa um texto enviado por um cliente seguro para o console do servidor: uma linha (quebras de linha viram |), sem caracteres de controle, sem códigos de cor ^1, cortado em max caracteres. Use sempre que uma linha de log contém um texto de jogador (um nome, uma mensagem, um bilhete).
Lado: Cliente, servidor e NUI · Espera: não
logSafe(text: string, max: number): stringLua: sem equivalente.
Parâmetros
Prop
Type
Retorno
string: o texto limpo.
Exemplo
import { logSafe } from "@aicore-fivem/lib/shared";
logSafe("^1fake error\nsecond line", 100); // "fake error | second line"Sem isto, um jogador pode escrever uma mensagem de chat com códigos de cor ^1 e quebras de linha que parece um erro real do servidor no seu console.
previewJson
Um texto curto parecido com JSON de qualquer valor não confiável, cortado em max caracteres, construído sem serializar o valor inteiro primeiro (um payload hostil pode ter megabytes). Aninhamentos com mais de 4 níveis aparecem como [...] / {...}. Use para imprimir o que um cliente enviou quando você o recusa.
Lado: Cliente, servidor e NUI · Espera: não
previewJson(value: unknown, max: number): stringLua: sem equivalente.
Parâmetros
Prop
Type
Retorno
string: a prévia, com no máximo max caracteres. As chaves de objetos são cortadas em 50 caracteres.
Exemplo
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)}`);
}