在 Node.js 中,有多種方法可以自定義日志輸出。以下是一些常見的方法:
console 模塊:Node.js 自帶的 console 模塊提供了基本的日志功能,如 console.log()、console.error() 等。你可以通過格式化字符串來自定義輸出:
const name = 'Node.js';
const version = process.version;
console.log(`[${new Date().toISOString()}] ${name} v${version}`);
有許多第三方日志庫可以提供更豐富的功能,如 Winston 和 Bunyan。這些庫通常允許你自定義日志級別、格式和輸出目的地。
以 Winston 為例,你可以這樣自定義日志輸出:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] ${level.toUpperCase()}: ${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' }),
],
});
logger.info('Hello, Winston!');
你還可以創建一個自定義的日志輸出類,以滿足特定需求。例如,你可以創建一個將日志輸出到數據庫或遠程服務器的類。
class CustomLogger {
constructor() {
// 初始化配置
}
log(message) {
// 自定義日志輸出邏輯
console.log(`[CustomLogger] ${message}`);
}
error(message) {
// 自定義錯誤日志輸出邏輯
console.error(`[CustomLogger] ${message}`);
}
}
const logger = new CustomLogger();
logger.log('Hello, CustomLogger!');
總之,你可以根據自己的需求選擇合適的方法來自定義 Node.js 的日志輸出。