在Ubuntu上配置Node.js日志的要點主要包括以下幾個方面:
使用npm或yarn安裝所選的日志庫。例如,安裝winston:
npm install winston
根據日志庫的文檔來配置它。以下是一個使用winston的示例配置:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' }),
],
});
使用不同的日志級別(如error、warn、info、debug、trace)來區分事件的重要性,避免記錄不必要的信息。
配置日志輪換工具(如logrotate)按日期或大小輪換日志文件,防止單個文件過大。例如,使用winston-daily-rotate-file庫:
npm install winston-daily-rotate-file
然后在日志配置中使用它:
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.json()),
transports: [transport, new transports.Console({ format: format.simple() })],
});
可以使用環境變量來控制日志級別和日志文件的路徑,這樣可以在不同的環境中(如開發、測試和生產)靈活地配置日志。
如果使用systemd管理服務,可以在systemd服務單元文件中配置日志輸出。例如,在/etc/systemd/system/verdaccio.service
文件中配置日志輸出到系統日志:
[Service]
Type simple
User root
Environment NODE_ENV=production
WorkingDirectory /root/verdaccio
ExecStart /usr/local/bin/verdaccio
Restart always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=verdaccio
使用日志分析工具(如Logwatch、Analog)來檢查和報告日志,設置日志級別以過濾不必要的信息。對于生產環境,可能還需要將日志發送到集中式日志管理系統,如ELK Stack(Elasticsearch, Logstash, Kibana)或Graylog,并設置報警機制以便在出現錯誤時及時通知。
通過以上步驟,可以有效地在Ubuntu系統上為Node.js應用程序配置日志記錄,以便于問題追蹤和性能監控。