tslog v5؛ یه لاگر برای همهٔ رانتایمها
خلاصهٔ کاملتر
tslog یه کتابخانهٔ لاگنویسی برای تایپاسکریپت و جاوااسکریپته که هدفش اینه با یه ایمپورت هم توی Node.js جواب بده، هم مرورگر، Deno، Bun، وبورکر و React Native. توی مستندات پروژه اومده که نسخهٔ ۵ عمداً یه بازطراحی شکنندهست: فقط ESM و بدون بیلد CommonJS، حداقل Node 20، تنظیمات گروهبندیشده بهجای کلیدهای تخت قدیمی، شکل تازهٔ JSON فیلدمحور، و میدلور بهجای overwrite.*.
خروجی پیشفرض pretty ـه و خودش محیط رو تشخیص میده: توی ترمینال تعاملی رنگیه و وقتی خروجی pipe بشه یا توی CI بره، بیرنگ. برای پروداکشن با type: "json" میره سراغ JSON تخت و فیلدمحور که مستقیم به پایپلاینهای observability میخوره. ماسککردن مقادیر حساس هم داخلیه: با کلید، مسیر شبهJSONPath، رجکس، یا حتی یه censor هشکننده که همبستگی داده رو حفظ کنه.
سابلاگرها با child() یا getSubLogger() ساخته میشن، تنظیمات و فیلدهای والد رو به ارث میبرن و اسمهاشون توی _logMeta.parentNames روی هم جمع میشه — مناسب دنبالکردن یه ریکوئست یا یه ایجنت:
import { Logger } from "tslog";
const log = new Logger({ minLevel: "INFO" });
log.info({ port: 3000 }, "server started");
const requestLog = log.getSubLogger({ name: "agent:planner" });
requestLog.info({ tool: "search", tokens: 318 }, "tool call done");بستهٔ اصلی هیچ وابستگی رانتایمی نداره و ترنسپورتها، پریستها و هلپرها بهشکل سابپثهای tree-shakeable جدا شدن. کنار tslog سه بیلد دیگه هم هست: tslog/slim برای باندلهای حساس به حجم (حدود ۹.۸ کیلوبایت gzip در برابر ۲۰.۷)، tslog/testing برای اسرتزدن روی رکوردها بدون spy، و tslog/lite برای وقتی که میخوای devtools شمارهٔ خط خود کدت رو نشون بده نه خط لاگر.
نویسنده تأکید میکنه که اگه هنوز روی خط ۴.x هستین لازم نیست عجله کنین: بیشتر بهبودهای سرعتی v5 بدون تغییر شکننده به 4.11.0 بکپورت شدن و اون نسخه هم CJS و Node 16 رو نگه داشته. مهاجرت وقتی معنی داره که واقعاً قابلیتهای تازه رو بخواین.
نکات کلیدی:
- v5 فقط ESM ـه و حداقل Node 20 میخواد؛ بیلد CommonJS نداره
- یک لاگر برای Node، مرورگر، Deno، Bun و React Native، با صفر وابستگی رانتایم
- خروجی pretty خودکار رنگی یا بیرنگ میشه؛ JSON فیلدمحور یک گزینه فاصله داره
- ماسک رمز و دادههای حساس، سابلاگر با ارثبری، ترنسپورت و میدلور همه داخل بستهٔ اصلیان
- برای پروژههای v4 موندن روی 4.11.0 امنه




