在Debian系統上配置Node.js應用程序的日志可以通過多種方式實現,具體取決于你使用的Node.js框架和日志管理工具。以下是一些常見的方法和步驟:
Winston是一個流行的Node.js日志庫,可以靈活地配置日志輸出。
安裝Winston:
npm install winston
配置Winston:
創建一個日志配置文件,例如logger.js
:
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;
在應用程序中使用Winston:
const logger = require('./logger');
logger.info('Hello, world!');
logger.error('Something went wrong!');
PM2是一個進程管理器,可以自動重啟應用程序,并提供日志管理功能。
安裝PM2:
npm install pm2 -g
啟動應用程序:
pm2 start app.js --name my-app
查看日志:
pm2 logs my-app
配置日志文件大小和保留策略:
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
如果你使用Docker容器運行Node.js應用程序,可以使用Docker的日志驅動來管理日志。
創建Dockerfile:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
構建Docker鏡像:
docker build -t my-node-app .
運行Docker容器:
docker run -d --name my-running-app -p 3000:3000 my-node-app
查看日志:
docker logs my-running-app
你也可以將Node.js應用程序的日志輸出到系統的日志文件中,例如/var/log/syslog
。
const { createLogger, format, transports } = require('winston');
const SyslogTransport = require('winston-daily-rotate-file');
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 SyslogTransport({
app_name: 'my-node-app',
facility: 'local0',
level: 'info'
})
]
});
module.exports = logger;
通過以上方法,你可以根據具體需求選擇合適的日志管理方式來配置Debian系統上的Node.js應用程序日志。