ubuntu

Ubuntu JS日志级别如何设置合理

小樊
33
2025-05-19 09:48:02
栏目: 编程语言

在Ubuntu系统中,如果你使用的是Node.js应用程序,你可以通过配置日志库来设置合理的日志级别。以下是一些常见的日志库和如何设置它们的日志级别的方法:

1. 使用 winston 日志库

winston 是一个流行的Node.js日志库,你可以通过配置不同的传输(transports)和日志级别来控制日志输出。

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info', // 设置默认日志级别
  format: winston.format.json(),
  transports: [
    new winston.transports.Console({
      format: winston.format.simple(),
      level: 'debug' // 设置控制台输出的日志级别
    }),
    new winston.transports.File({ filename: 'error.log', level: 'error' }), // 错误日志
    new winston.transports.File({ filename: 'combined.log' }) // 所有日志
  ]
});

// 示例日志输出
logger.debug('This is a debug message');
logger.info('This is an info message');
logger.warn('This is a warning message');
logger.error('This is an error message');

2. 使用 morgan 日志库

morgan 是一个HTTP请求日志中间件,通常与Express一起使用。

const express = require('express');
const morgan = require('morgan');

const app = express();

// 设置日志格式和级别
app.use(morgan('combined')); // 默认级别是 'combined'

// 或者自定义日志格式和级别
app.use(morgan('tiny', { skip: (req, res) => res.statusCode < 400 })); // 只记录4xx和5xx错误

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

3. 使用 pino 日志库

pino 是一个高性能的日志库,适用于生产环境。

const pino = require('pino');

const logger = pino({
  level: 'info' // 设置默认日志级别
});

// 示例日志输出
logger.debug('This is a debug message'); // 不会输出,因为级别低于info
logger.info('This is an info message');
logger.warn('This is a warning message');
logger.error('This is an error message');

设置环境变量

你也可以通过设置环境变量来控制日志级别。例如,对于 winston

export WINSTON_LEVEL=debug
node your-app.js

对于 pino

export PINO_LEVEL=debug
node your-app.js

总结

选择合适的日志级别取决于你的应用需求和运行环境。通常,开发环境中可以使用较高的日志级别(如 debuginfo),而在生产环境中则应使用较低的日志级别(如 warnerror),以减少日志文件的大小和提高性能。

0
看了该问题的人还看了