温馨提示×

debian js日志配置怎么写

小樊
47
2026-09-13 05:04:15
栏目: 编程语言

在 Debian 上“JS 日志配置”通常分几种场景,我先按最常见的三类给你说明,你可以对号入座。如果你指的是某一种(比如 Node.js / Nginx 前端日志 / pm2),可以直接告诉我。


一、Node.js 应用日志配置(最常用)

1️⃣ 使用 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

2️⃣ 使用 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

二、前端 JS 错误日志(Nginx + Debian)

1️⃣ Nginx 访问 / 错误日志

配置文件(如 /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

2️⃣ 前端 JS 错误收集示例

window.onerror = function (msg, url, line, col, error) {
  fetch('/log', {
    method: 'POST',
    body: JSON.stringify({ msg, url, line, col })
  });
};

三、systemd 管理 Node.js 日志(Debian 官方方式)

/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

你可以告诉我:

  • Node.js 后端 还是 前端 JS
  • 用没用 pm2 / docker / systemd
  • 日志要打到 文件 / journalctl / 远程服务

我可以直接给你一份可复制的完整配置

0