AI Core
Справочник APILib: общее и fivem

Логирование

createLogger, logSafe и previewJson: строки в консоли с именем вашего ресурса и недоверенный текст, безопасный для вывода.

Эти помощники пишут в консоль (F8 на клиенте, консоль сервера или txAdmin на сервере). Для логов, которые владелец сервера читает в Discord, Fivemanage или FiveM Stats, используйте aiLog (см. Логи).

TypeScript
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";

createLogger

Возвращает логгер, строки которого начинаются с [your-resource], поэтому в консоли сервера видно, откуда пришла каждая строка. Предупреждения жёлтые, ошибки красные.

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
createLogger(resource: string): Logger

Lua: аналога нет; используйте print(('[%s] %s'):format(GetCurrentResourceName(), message)).

Параметры

Prop

Type

Возвращает

Logger:

Prop

Type

Пример

resource/server/index.ts
import { createLogger } from "@aicore-fivem/lib/shared";

const log = createLogger(GetCurrentResourceName());

log.info("loaded 12 shops");               // [my-shop] загружено 12 магазинов
log.warn("shop legion has no ped model");  // жёлтая
try {
  JSON.parse("{");
} catch (error) {
  log.error("could not read shops.json", error); // красная, с ошибкой
}

logSafe

Делает текст, отправленный клиентом, безопасным для консоли сервера: одна строка (переносы становятся |), без управляющих символов, без цветовых кодов ^1, урезано до max символов. Используйте всегда, когда строка лога содержит текст игрока (имя, сообщение, заметку).

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
logSafe(text: string, max: number): string

Lua: аналога нет.

Параметры

Prop

Type

Возвращает

string: очищенный текст.

Пример

import { logSafe } from "@aicore-fivem/lib/shared";

logSafe("^1fake error\nsecond line", 100); // "fake error | second line"

Без этого игрок может написать в чат сообщение с цветовыми кодами ^1 и переносами строк, которое в вашей консоли выглядит как настоящая ошибка сервера.

previewJson

Короткий JSON-подобный текст любого недоверенного значения, урезанный до max символов и построенный без предварительной сериализации всего значения (враждебные данные могут весить мегабайты). Вложенность глубже 4 уровней показывается как [...] / {...}. Используйте, чтобы вывести то, что прислал клиент, когда вы ему отказываете.

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
previewJson(value: unknown, max: number): string

Lua: аналога нет.

Параметры

Prop

Type

Возвращает

string: предпросмотр, не более max символов. Ключи объектов урезаются до 50 символов.

Пример

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

На этой странице