AI Core
Dokumentacja APILib: shared i fivem

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

TypeScript
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

Sygnatura
createLogger(resource: string): Logger

Lua: brak odpowiednika; użyj print(('[%s] %s'):format(GetCurrentResourceName(), message)).

Parametry

Prop

Type

Zwracana wartość

Logger:

Prop

Type

Przykład

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");  // żół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

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

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

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

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

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)}`);
}

Na tej stronie