在CentOS上配置Node.js应用程序的日志存储策略,可以遵循以下几个步骤:
首先,选择一个适合Node.js的日志库。常用的日志库包括:
winston
pino
morgan
这些库提供了丰富的日志记录功能,包括日志级别、日志格式化、日志轮转等。
以winston
为例,配置日志存储策略:
const winston = require('winston');
const { createLogger, format, transports } = 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: 'logs/error.log', level: 'error' }),
new transports.File({ filename: 'logs/combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new transports.Console({
format: format.simple()
}));
}
为了防止日志文件过大,可以使用winston-daily-rotate-file
库来实现日志轮转:
const { createLogger, format, transports } = winston;
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: 'logs/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.Console({
format: format.simple()
})
]
});
定期监控日志文件的大小和数量,并设置自动清理策略。可以使用cron
任务来定期清理旧日志文件:
# 每天凌晨2点清理7天前的日志文件
0 2 * * * find /path/to/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;
如果需要将日志发送到系统日志服务(如syslog
),可以使用winston-syslog
库:
const { createLogger, format, transports } = winston;
const Syslog = require('winston-syslog');
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 Syslog({
host: 'localhost',
port: 514,
protocol: 'udp4'
}),
new transports.Console({
format: format.simple()
})
]
});
如果Node.js应用程序通过Nginx或Apache反向代理,可以配置这些服务器来处理日志文件,以便更好地管理和监控日志。
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
通过以上步骤,你可以在CentOS上配置Node.js应用程序的日志存储策略,确保日志文件得到有效管理和监控。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: centos怎么查看iscsi的状态