Loglama
createLogger, logSafe ve previewJson: resource’unun adını taşıyan konsol satırları ve yazdırmak için güvenli hale getirilmiş güvenilmeyen metin.
Bu yardımcılar konsola yazar (client’ta F8, server’da server konsolu ya da txAdmin). Sunucu sahibinin Discord’da, Fivemanage’da ya da FiveM Stats’te okuduğu loglar için bunun yerine aiLog kullan (bkz. Loglar).
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";createLogger
Satırları [your-resource] ile başlayan bir logger döndürür; böylece server konsolu her satırın nereden geldiğini gösterir. Uyarılar sarı, hatalar kırmızıdır.
Taraf: Client, server ve NUI · Bekler: hayır
createLogger(resource: string): LoggerLua: karşılığı yok; print(('[%s] %s'):format(GetCurrentResourceName(), message)) kullan.
Parametreler
Prop
Type
Dönüş değeri
Logger:
Prop
Type
Örnek
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"); // sarı
try {
JSON.parse("{");
} catch (error) {
log.error("could not read shops.json", error); // kırmızı, hatayla birlikte
}logSafe
Bir client’ın gönderdiği metni server konsolu için güvenli hale getirir: tek satır (satır sonları | olur), kontrol karakterleri yok, ^1 renk kodları yok, max karaktere kesilir. Bir log satırı bir oyuncunun metnini (bir ad, bir mesaj, bir not) içerdiğinde her zaman kullan.
Taraf: Client, server ve NUI · Bekler: hayır
logSafe(text: string, max: number): stringLua: karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
string: temizlenmiş metin.
Örnek
import { logSafe } from "@aicore-fivem/lib/shared";
logSafe("^1fake error\nsecond line", 100); // "fake error | second line"Bu olmadan bir oyuncu, ^1 renk kodları ve satır sonlarıyla konsolunda gerçek bir server hatası gibi görünen bir sohbet mesajı yazabilir.
previewJson
Güvenilmeyen herhangi bir değerin, max karakterde kesilen kısa, JSON benzeri bir metni; önce değerin tamamı serileştirilmeden kurulur (düşmanca bir payload megabaytlarca olabilir). 4 seviyeden derin iç içe yapılar [...] / {...} olarak gösterilir. Bir client’ın gönderdiğini reddettiğinde onu yazdırmak için kullan.
Taraf: Client, server ve NUI · Bekler: hayır
previewJson(value: unknown, max: number): stringLua: karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
string: önizleme, en fazla max karakter. Nesne anahtarları 50 karaktere kesilir.
Örnek
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)}`);
}