在 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/error.log', level: 'error' }),
new transports.File({ filename: 'logs/combined.log' })
]
});
module.exports = logger;
在这个示例中,我们定义了一个自定义格式,包括时间戳、日志级别和消息。然后,我们将这个格式应用到 createLogger
函数中,并将日志输出到控制台和两个不同的文件。
首先,需要安装 morgan
:
npm install morgan
然后,在你的主要应用文件(如 app.js
)中设置自定义日志格式:
const express = require('express');
const morgan = require('morgan');
const app = express();
const morganFormat = ':method :url :status :res[content-length] - :response-time ms - :message';
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');
});
在这个示例中,我们定义了一个自定义格式,包括请求方法、URL、状态码、响应时间等。然后,我们将这个格式应用到 morgan
函数中,并将日志输出到控制台。
这两个示例展示了如何在 Node.js 中自定义日志输出格式。你可以根据自己的需求调整格式和输出目标。