在 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 日志格式了。