在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应用程序配置日志记录,以便于问题追踪和性能监控。