1. 基础命令行工具:实时查看与过滤
在Debian服务器上,可通过命令行快速监控JS日志(适用于临时排查或简单场景):
tail -f:实时追踪日志文件更新,例如tail -f /var/log/syslog(系统日志)或tail -f /path/to/your/app.log(应用自定义日志),按Ctrl+C停止。grep:筛选特定关键词(如“error”“warning”),例如tail -f app.log | grep 'error',仅显示包含该关键词的日志条目。less/more:分页查看日志文件,适合查看历史日志,例如less /path/to/your/app.log,按空格翻页、q退出。2. 进程管理器:集成日志管理与监控
使用PM2(Node.js常用进程管理器)可简化日志收集、轮转及实时查看:
pm2 start app.js --name my-js-app。pm2 logs命令实时查看所有应用的日志;若需查看特定应用,使用pm2 logs my-js-app;还可限制行数(如pm2 logs my-js-app --lines 100)或跟随日志(pm2 logs my-js-app -f)。pm2 set pm2:log_rotate true开启,默认保留7天日志,避免日志文件过大。3. 日志库:结构化与精细化日志管理
在JS代码中集成日志库(如Winston、Bunyan),可实现日志分级、格式化及多传输(文件、控制台、数据库等):
npm install winston,配置JSON格式日志及分级存储(错误日志单独保存),例如:const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('Application started');
logger.error('Database connection failed');
npm install bunyan,生成结构化JSON日志,便于后续分析,例如:const bunyan = require('bunyan');
const logger = bunyan.createLogger({ name: 'my-js-app' });
logger.info('Request received', { method: 'GET', url: '/api' });
这些日志库可提升日志的可读性与可分析性,适合生产环境。4. 集中式日志管理:ELK Stack(Elasticsearch+Logstash+Kibana)
对于大规模或分布式JS应用,可使用ELK Stack实现日志的集中收集、存储、搜索及可视化:
sudo apt install elasticsearch)、Logstash(sudo apt install logstash)、Kibana(sudo apt install kibana),并启动服务(systemctl start elasticsearch等)。/etc/logstash/conf.d/nodejs.conf文件,定义日志输入(如Node.js应用的app.log文件)、过滤(可选)及输出(Elasticsearch),例如:input {
file {
path => "/path/to/your/nodejs/app.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "nodejs-logs-%{+YYYY.MM.dd}"
}
}
http://your-debian-ip:5601),创建索引模式(如nodejs-logs-*),通过Discover界面实时查看、搜索及分析日志。5. 系统日志集成:rsyslog/syslog-ng
将JS应用日志发送到系统日志服务(rsyslog/syslog-ng),统一管理所有系统与服务日志:
syslog(如Winston配置transports: [new winston.transports.Syslog({ host: 'localhost', port: 514 })]),或通过命令行重定向(如node app.js >> /var/log/syslog 2>&1)。journalctl(systemd工具)查看JS应用日志(若应用以systemd服务运行),例如journalctl -u my-js-app -f(实时查看)或journalctl -u my-js-app --since "1 hour ago"(查看过去1小时日志)。