自動化處理 Node.js 日志可以通過多種方式實現,以下是一些常見的方法和工具:
winston
或 pino
進行日志記錄winston
和 pino
是 Node.js 中常用的日志庫,它們提供了豐富的功能和靈活的配置選項。
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' }),
],
});
// 如果不在生產環境中,可以將日志輸出到控制臺
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple(),
}));
}
const pino = require('pino');
const logger = pino({
level: 'info',
transport: {
target: 'pino-pretty',
options: { colorize: true }
}
});
logger.info('Hello, world!');
logrotate
進行日志輪轉logrotate
是一個用于管理日志文件的工具,可以自動壓縮、刪除和創建新的日志文件。
logrotate
:創建一個 logrotate
配置文件 /etc/logrotate.d/nodejs
:
/path/to/your/nodejs/logs/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
pm2
進行進程管理和日志監控pm2
是一個進程管理器,可以自動重啟應用、監控日志等。
pm2
:npm install pm2 -g
pm2 start app.js --name my-app
pm2 logs my-app --lines 100 # 查看最近100行日志
pm2 logs my-app --follow # 實時查看日志
ELK
或 Graylog
進行集中式日志管理ELK
(Elasticsearch, Logstash, Kibana)和 Graylog
是流行的集中式日志管理系統,可以收集、存儲和分析日志。
Filebeat
收集日志并發送到 ELK
:filebeat.inputs:
- type: log
enabled: true
paths:
- /path/to/your/nodejs/logs/*.log
output.elasticsearch:
hosts: ["localhost:9200"]
fluentd
進行日志收集和處理fluentd
是一個開源的數據收集器,可以統一日志格式并進行處理。
fluentd
:sudo apt-get install fluentd
fluentd
收集日志:<source>
@type tail
path /path/to/your/nodejs/logs/*.log
pos_file /var/log/fluentd/nodejs.log.pos
tag nodejs
<parse>
@type json
</parse>
</source>
<match nodejs>
@type stdout
</match>
通過這些方法和工具,你可以自動化處理 Node.js 日志,提高日志管理的效率和可靠性。