ubuntu

Node.js日志在Ubuntu中如何高效查询

小樊
45
2025-06-30 22:58:20
栏目: 编程语言

在Ubuntu中高效查询Node.js日志,可以采用以下几种方法:

使用 console.logconsole.error

Node.js应用中常用的日志记录方式是通过 console.logconsole.error 输出日志信息。这些日志信息会直接显示在终端中,便于开发者实时查看。

console.log('This is a log message');
console.error('This is an error message');

日志文件管理

为了更好地管理日志,可以将日志输出到文件中。可以使用Node.js的 fs 模块来实现:

const fs = require('fs');

const logFile = fs.createWriteStream('app.log', { flags: 'a' });

console.log = function (message) {
  const timestamp = new Date().toISOString() + ' - ' + message;
  logFile.write(timestamp + '
');
  console.log(message);
};

console.error = function (message) {
  const timestamp = new Date().toISOString() + ' - ERROR - ' + message;
  logFile.write(timestamp + '
');
  console.error(message);
};

使用日志管理工具

可以使用专门的日志管理工具,如 winstonbunyan,这些工具提供了更高级的日志管理功能,如日志级别、日志格式化、日志轮转等。

使用 winston

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'combined.log' }),
    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!');
logger.error('This will get logged to error.log');

使用 bunyan

const bunyan = require('bunyan');

const log = bunyan.createLogger({
  name: 'my-app',
  level: 'info',
  streams: [
    {
      level: 'info',
      stream: process.stdout,
    },
    {
      level: 'error',
      path: './error.log',
    },
  ],
});

log.info('Hello World!');
log.error('This will get logged to error.log');

日志轮转

对于长时间运行的Node.js应用,建议使用日志轮转工具,如 logrotate,以避免单个日志文件过大。

安装 logrotate

sudo apt-get install logrotate

配置 logrotate

创建或编辑 /etc/logrotate.d/nodejs 文件:

/var/log/nodejs/*.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  notifempty
  create 0644 root root
}

这个配置表示每天轮转一次日志文件,保留最近7天的日志文件,并且使用gzip压缩旧日志文件。

通过以上方法,可以在Ubuntu中高效地查询和管理Node.js应用的日志。

0
看了该问题的人还看了