在Ubuntu系统中,如果你使用的是Node.js应用程序,你可以通过配置日志库来设置合理的日志级别。以下是一些常见的日志库和如何设置它们的日志级别的方法:
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');
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');
});
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
选择合适的日志级别取决于你的应用需求和运行环境。通常,开发环境中可以使用较高的日志级别(如 debug
或 info
),而在生产环境中则应使用较低的日志级别(如 warn
或 error
),以减少日志文件的大小和提高性能。