Một thư viện logger đơn giản, có màu sắc và hỗ trợ định dạng JSON cho các dự án Node.js.
- ✨ Hỗ trợ 4 mức log:
error,warn,info,debug - 🎨 Console output có màu sắc với Chalk
- 📁 Tự động ghi log vào file theo ngày
- 📋 Hỗ trợ định dạng JSON hoặc text thông thường
- 🎯 JSON colorization cho console output
- ⚙️ Cấu hình linh hoạt
- 📦 Viết bằng TypeScript với type definitions
npm install cfs-loggerimport { Logger } from "cfs-logger";
// Khởi tạo logger với cấu hình mặc định
const logger = new Logger();
// Sử dụng các phương thức log
logger.info("Thông tin ứng dụng");
logger.warn("Cảnh báo");
logger.error("Lỗi xảy ra");
logger.debug("Thông tin debug");interface LoggerOptions {
level?: LogLevel; // Mức log tối thiểu (mặc định: "info")
logDir?: string; // Thư mục lưu log files (mặc định: "./logs")
enableConsole?: boolean; // Bật/tắt console output (mặc định: true)
enableFile?: boolean; // Bật/tắt file logging (mặc định: true)
jsonFormat?: boolean; // Định dạng JSON (mặc định: true)
prettyPrint?: boolean; // Làm đẹp JSON với indentation (mặc định: false)
singleLine?: boolean; // JSON một dòng, ưu tiên cao nhất (mặc định: false)
}error: Chỉ hiển thị lỗiwarn: Hiển thị cảnh báo và lỗiinfo: Hiển thị thông tin, cảnh báo và lỗi (mặc định)debug: Hiển thị tất cả log
import { Logger } from "cfs-logger";
const logger = new Logger({
level: "debug",
logDir: "./my-logs",
enableConsole: true,
enableFile: true,
jsonFormat: true,
prettyPrint: false,
singleLine: false
});
logger.debug("Debug message");
logger.info("Info message", { userId: 123, action: "login" });
logger.warn("Warning message");
logger.error("Error message", new Error("Something went wrong"));const logger = new Logger({
jsonFormat: true,
prettyPrint: true,
singleLine: false
});
logger.info("User logged in", { userId: 123, timestamp: new Date() });
// Console output (với màu sắc):
// {
// "timestamp": "2024-08-26T10:30:00.123Z",
// "level": "info",
// "messages": [
// "User logged in",
// {
// "userId": 123,
// "timestamp": "2024-08-26T10:30:00.123Z"
// }
// ]
// }const logger = new Logger({
jsonFormat: true,
singleLine: true // Ưu tiên cao nhất, ghi đè prettyPrint
});
logger.info("User logged in", { userId: 123 });
// Output: {"timestamp":"2024-08-26T10:30:00.123Z","level":"info","messages":["User logged in",{"userId":123}]}const logger = new Logger({
enableFile: false,
enableConsole: true,
});
logger.info("Chỉ hiển thị trên console");const logger = new Logger({
enableConsole: false,
enableFile: true,
logDir: "./logs",
});
logger.info("Chỉ ghi vào file");const logger = new Logger({
jsonFormat: false,
});
logger.info("Log với định dạng text", { key: "value" });
// Output: [2024-08-26T10:30:00.123Z] [INFO]: Log với định dạng text {"key":"value"}Khi sử dụng jsonFormat: true và prettyPrint: true, console output sẽ có màu sắc:
- 🔵 Tên thuộc tính (keys): Cyan
- 🟢 Chuỗi (strings): Green
- 🟡 Số (numbers): Yellow
- 🟣 Boolean: Magenta
- ⚫ null: Gray
logger.info("User action:", { userId: 123 }, "additional data", true);
// Tất cả arguments sẽ được xử lý và lưu trong mảng messages- Log files được tạo tự động theo ngày trong format:
YYYY-MM-DD.log - Ví dụ:
2024-08-26.log - Thư mục mặc định:
./logs/ - Nếu thư mục không tồn tại, sẽ được tạo tự động
- File logs luôn sử dụng định dạng được cấu hình (JSON hoặc text)
- 🔴
error: Đỏ - 🟡
warn: Vàng - 🔵
info: Xanh dương - ⚫
debug: Xám
Thư viện được viết hoàn toàn bằng TypeScript và bao gồm type definitions:
import { Logger, LogLevel, LoggerOptions } from "cfs-logger";
const options: LoggerOptions = {
level: "debug",
logDir: "./logs",
jsonFormat: true,
prettyPrint: true,
singleLine: false
};
const logger = new Logger(options);export type LogLevel = "error" | "warn" | "info" | "debug";
export interface LoggerOptions {
level?: LogLevel;
logDir?: string;
enableConsole?: boolean;
enableFile?: boolean;
jsonFormat?: boolean;
prettyPrint?: boolean;
singleLine?: boolean;
}import { Logger } from "cfs-logger";
// Logger cho môi trường development
const devLogger = new Logger({
level: "debug",
jsonFormat: true,
prettyPrint: true,
singleLine: false
});
// Logger cho môi trường production
const prodLogger = new Logger({
level: "info",
jsonFormat: true,
singleLine: true,
enableConsole: false // Chỉ ghi file trong production
});
// Sử dụng
const isProduction = process.env.NODE_ENV === "production";
const logger = isProduction ? prodLogger : devLogger;
logger.info("Application started", {
env: process.env.NODE_ENV,
port: 3000
});chalk: Tạo màu sắc cho console outputfs: File system operations (built-in Node.js)path: Path utilities (built-in Node.js)
MIT
nhson