在 Ubuntu 上分析 Node.js 日志有多種方法,下面是一些常用的方法和工具:
cat, less, more最簡單的方法是使用命令行查看日志文件:
cat /path/to/your/nodejs.log
或者使用 less 和 more 分頁查看:
less /path/to/your/nodejs.log
grep用 grep 查找特定的關鍵字或模式:
grep 'ERROR' /path/to/your/nodejs.log
awk, sed對于更復雜的文本處理,可以使用 awk 或 sed:
awk '/ERROR/ {print}' /path/to/your/nodejs.log
logrotatelogrotate 是一個系統工具,用于管理日志文件的輪轉和壓縮。確保你的 Node.js 應用程序使用標準的日志記錄機制,然后配置 logrotate 來處理這些日志。
rsyslogrsyslog 是一個強大的系統日志管理工具,可以用來收集、過濾和轉發日志。你可以配置 rsyslog 來處理 Node.js 應用程序的日志。
ELK Stack (Elasticsearch, Logstash, Kibana)ELK Stack 是一個流行的日志分析解決方案。你可以使用 Logstash 收集 Node.js 日志,然后使用 Elasticsearch 存儲和索引日志數據,最后通過 Kibana 進行可視化分析。
FluentdFluentd 是一個開源的數據收集器,可以用來統一日志記錄。它可以與 Elasticsearch 和其他存儲后端集成,提供靈活的日志處理能力。
GraylogGraylog 是一個集中式日志管理平臺,支持多種輸入源和強大的搜索功能。你可以配置 rsyslog 或其他日志收集器將 Node.js 日志發送到 Graylog。
Node.js 有許多日志庫可以幫助你更好地管理和分析日志,例如:
winston: 一個靈活的日志庫,支持多種傳輸和格式化選項。pino: 一個高性能的日志庫,適合生產環境。morgan: 一個 HTTP 請求日志中間件,適用于 Express 應用程序。安裝 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' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
logger.info('Hello world!');
配置 Logrotate:
創建一個 /etc/logrotate.d/nodejs 文件,內容如下:
/path/to/your/nodejs.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root adm
}
通過這些方法和工具,你可以在 Ubuntu 上有效地分析和處理 Node.js 日志。