Logowanie
createLogger, logSafe i previewJson: linie konsoli z nazwą twojego zasobu i niezaufany tekst bezpieczny do wypisania.
Te funkcje piszą do konsoli (F8 na kliencie, konsola serwera albo txAdmin na serwerze). Dla logów, które właściciel serwera czyta na Discordzie, w Fivemanage albo FiveM Stats, użyj zamiast tego aiLog (zobacz Logi).
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";createLogger
Zwraca logger, którego linie zaczynają się od [your-resource], więc konsola serwera pokazuje, skąd pochodzi każda linia. Ostrzeżenia są żółte, błędy czerwone.
Strona: Klient, serwer i NUI · Czeka: nie
createLogger(resource: string): LoggerLua: brak odpowiednika; użyj print(('[%s] %s'):format(GetCurrentResourceName(), message)).
Parametry
Prop
Type
Zwracana wartość
Logger:
Prop
Type
Przykład
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"); // żółta
try {
JSON.parse("{");
} catch (error) {
log.error("could not read shops.json", error); // czerwona, z błędem
}logSafe
Sprawia, że tekst wysłany przez klienta jest bezpieczny dla konsoli serwera: jedna linia (łamania linii stają się |), bez znaków sterujących, bez kodów kolorów ^1, skrócony do max znaków. Używaj go zawsze, gdy linia logu zawiera tekst gracza (nazwę, wiadomość, notatkę).
Strona: Klient, serwer i NUI · Czeka: nie
logSafe(text: string, max: number): stringLua: brak odpowiednika.
Parametry
Prop
Type
Zwracana wartość
string: oczyszczony tekst.
Przykład
import { logSafe } from "@aicore-fivem/lib/shared";
logSafe("^1fake error\nsecond line", 100); // "fake error | second line"Bez tego gracz może napisać wiadomość na czacie z kodami kolorów ^1 i łamaniami linii, która w twojej konsoli wygląda jak prawdziwy błąd serwera.
previewJson
Krótki tekst w stylu JSON z dowolnej niezaufanej wartości, skrócony do max znaków, budowany bez wcześniejszej serializacji całej wartości (wrogi ładunek może mieć megabajty). Zagnieżdżenie głębsze niż 4 poziomy pokazuje się jako [...] / {...}. Używaj go, żeby wypisać, co wysłał klient, gdy go odrzucasz.
Strona: Klient, serwer i NUI · Czeka: nie
previewJson(value: unknown, max: number): stringLua: brak odpowiednika.
Parametry
Prop
Type
Zwracana wartość
string: podgląd, najwyżej max znaków. Klucze obiektów są skracane do 50 znaków.
Przykład
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)}`);
}