温馨提示×

如何设置Node.js在Debian上的日志格式

小樊
35
2025-12-12 10:48:55
栏目: 编程语言

在Debian上设置Node.js应用程序的日志格式,可以通过多种方式实现,包括使用内置的日志模块、第三方日志库或配置反向代理服务器(如Nginx)来记录请求日志。以下是一些常见的方法:

方法一:使用Node.js内置的console模块

虽然console模块不是专门用于日志记录的,但它可以用于简单的日志记录需求。

const http = require('http');

const server = http.createServer((req, res) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

方法二:使用第三方日志库(如winston

winston是一个非常流行的Node.js日志库,支持多种传输和格式化选项。

  1. 安装winston
npm install winston
  1. 配置winston
const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp({
      format: 'YYYY-MM-DD HH:mm:ss'
    }),
    winston.format.printf(({ timestamp, level, message }) => {
      return `${timestamp} ${level}: ${message}`;
    })
  ),
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

const server = http.createServer((req, res) => {
  logger.info(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
});

server.listen(3000, () => {
  logger.info('Server running at http://localhost:3000/');
});

方法三:配置Nginx记录请求日志

如果你使用Nginx作为反向代理服务器,可以在Nginx配置文件中设置日志格式。

  1. 编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default):
http {
    log_format custom '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $body_bytes_sent '
                      '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log custom;
    error_log /var/log/nginx/error.log;

    server {
        listen 80;
        server_name yourdomain.com;

        location / {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}
  1. 重新加载Nginx配置:
sudo nginx -s reload

通过这些方法,你可以在Debian上设置Node.js应用程序的日志格式,以满足不同的需求。

0