在 Node.js 中,可以使用第三方庫 winston
或 morgan
來自定義日志格式。這里分別介紹這兩個庫的使用方法。
首先,需要安裝 winston
:
npm install winston
然后,創建一個 logger.js
文件,并設置自定義日志格式:
const { createLogger, format, transports } = require('winston');
const myFormat = format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `[${timestamp}] ${level.toUpperCase()}: ${message}`;
})
);
const logger = createLogger({
level: 'info',
format: myFormat,
transports: [
new transports.Console(),
new transports.File({ filename: 'logs/app.log' })
]
});
module.exports = logger;
在這個例子中,我們使用了 format.combine
方法來組合多個格式化選項。format.timestamp
用于添加時間戳,format.printf
用于自定義日志輸出格式。
接下來,在你的應用中使用這個自定義的 logger:
const logger = require('./logger');
logger.info('Hello, world!');
首先,需要安裝 morgan
:
npm install morgan
然后,在你的應用中使用 morgan
:
const express = require('express');
const morgan = require('morgan');
const app = express();
const morganFormat = ':method :url :status :res[content-length] - :response-time ms :user-agent';
app.use(morgan(morganFormat, {
stream: {
write: (message) => {
console.log(`[${new Date().toISOString()}] ${message}`);
}
}
}));
app.get('/', (req, res) => {
res.send('Hello, world!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在這個例子中,我們定義了一個名為 morganFormat
的自定義格式字符串。然后,我們將這個格式傳遞給 morgan
,并通過 stream
選項自定義輸出方式。
這樣,你就可以根據自己的需求自定義 Node.js 日志格式了。