在Debian上集成Node.js日志系统,可以遵循以下步骤:
首先,确保你的Debian系统上已经安装了Node.js。你可以使用以下命令来安装:
sudo apt update
sudo apt install nodejs npm
Node.js有许多日志库可供选择,例如winston
、morgan
、pino
等。这里我们以winston
为例。
使用npm安装winston
:
npm install winston
创建一个日志配置文件,例如logger.js
,并配置Winston:
const { createLogger, format, transports } = require('winston');
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new transports.File({ filename: 'error.log', level: 'error' }),
new transports.File({ filename: 'combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new transports.Console({
format: format.simple()
}));
}
module.exports = logger;
在你的Node.js应用中引入并使用配置好的logger
:
const express = require('express');
const logger = require('./logger');
const app = express();
app.get('/', (req, res) => {
logger.info('Hello World!');
res.send('Hello World!');
});
app.use((err, req, res, next) => {
logger.error(err.stack);
res.status(500).send('Something broke!');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
logger.info(`Server is running on port ${PORT}`);
});
为了防止日志文件过大,可以使用winston-daily-rotate-file
来实现日志轮转。
winston-daily-rotate-file
npm install winston-daily-rotate-file
更新logger.js
文件,添加日志轮转功能:
const { createLogger, format, transports } = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
transport,
new transports.File({ filename: 'error.log', level: 'error' }),
new transports.File({ filename: 'combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new transports.Console({
format: format.simple()
}));
}
module.exports = logger;
现在你可以运行你的Node.js应用,并查看日志文件:
node app.js
日志文件将会每天自动轮转,并且保留最近14天的日志文件。
通过以上步骤,你就可以在Debian上成功集成Node.js日志系统,并实现日志的记录和轮转。