Structured logging with levels, namespaces, and custom transports
import { createLogger, Logger } from "bytekit"; // or import { createLogger } from "bytekit/logger";
const logger = createLogger({ namespace: "app", level: "info", transports: [consoleTransport()] });
Show properties
logger.error(message: string, meta?: Record<string, unknown>)
logger.warn(message: string, meta?: Record<string, unknown>)
logger.info(message: string, meta?: Record<string, unknown>)
logger.debug(message: string, meta?: Record<string, unknown>)
const childLogger = logger.child("submodule");
import { createLogger } from "bytekit"; const logger = createLogger({ namespace: "api", level: "info" }); logger.info("User logged in", { userId: "123", timestamp: new Date().toISOString() }); logger.error("Failed to fetch data", { error: error.message, endpoint: "/users" }); // Child logger const dbLogger = logger.child("database"); dbLogger.debug("Query executed", { query: "SELECT * FROM users" });
import { createLogger, Transport } from "bytekit"; const fileTransport: Transport = (entry) => { // Write to file fs.appendFileSync("app.log", JSON.stringify(entry) + "\n"); }; const logger = createLogger({ transports: [fileTransport] });