在 Debian 上“JS 日志配置”通常分几种场景,我先按最常见的三类给你说明,你可以对号入座。如果你指的是某一种(比如 Node.js / Nginx 前端日志 / pm2),可以直接告诉我。
winston(推荐)安装:
npm install winston
示例配置(logger.js):
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
transports: [
new winston.transports.File({ filename: '/var/log/myapp/error.log', level: 'error' }),
new winston.transports.File({ filename: '/var/log/myapp/combined.log' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
module.exports = logger;
Debian 日志目录建议:
sudo mkdir -p /var/log/myapp
sudo chown -R youruser:youruser /var/log/myapp
pm2 管理日志(生产常用)启动:
pm2 start app.js --name myapp
查看日志:
pm2 logs myapp
日志位置(默认):
~/.pm2/logs/myapp-out.log
~/.pm2/logs/myapp-error.log
配置日志大小(防止爆盘):
pm2 start app.js --name myapp \
--log /var/log/myapp/app.log \
--error /var/log/myapp/err.log \
--max-size 10M \
--rotate-log
配置文件(如 /etc/nginx/sites-enabled/myapp):
server {
listen 80;
server_name example.com;
root /var/www/myapp;
index index.html;
access_log /var/log/nginx/myapp-access.log;
error_log /var/log/nginx/myapp-error.log;
}
重载:
sudo nginx -t
sudo systemctl reload nginx
window.onerror = function (msg, url, line, col, error) {
fetch('/log', {
method: 'POST',
body: JSON.stringify({ msg, url, line, col })
});
};
/etc/systemd/system/myapp.service:
[Unit]
Description=My Node App
[Service]
ExecStart=/usr/bin/node /opt/myapp/app.js
WorkingDirectory=/opt/myapp
User=www-data
Restart=always
[Install]
WantedBy=multi-user.target
查看日志:
journalctl -u myapp -f
Debian 自带 logrotate:
/etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
copytruncate
}
测试:
sudo logrotate -d /etc/logrotate.d/myapp
我可以直接给你一份可复制的完整配置。