Node.js日志在Ubuntu系统中的重要性主要体现在以下几个方面:
console
模块最简单的方法是使用Node.js内置的console
对象来打印日志信息。
console.log('This is a log message');
为了更灵活和强大的日志管理功能,可以使用如winston
、morgan
或pino
等第三方日志库。
示例:使用winston
安装winston
:
npm install winston
在代码中配置和使用winston
:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
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!');
为了避免日志文件过大,可以使用rotating-file-stream
等库来实现日志文件的自动轮转。
npm install rotating-file-stream
const rfs = require('rotating-file-stream');
const path = require('path');
const logDirectory = path.join(__dirname, 'logs');
if (!fs.existsSync(logDirectory)){
fs.mkdirSync(logDirectory);
}
const accessLogStream = rfs.createStream('access.log', {
interval: '1d', // 每天轮转一次
path: logDirectory
});
const errorLogStream = rfs.createStream('error.log', {
interval: '1d',
path: logDirectory
});
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Stream({ stream: accessLogStream }),
new winston.transports.Stream({ stream: errorLogStream })
]
});
Node.js日志在Ubuntu系统中扮演着至关重要的角色,不仅有助于日常的运维管理和故障排查,还能满足安全和合规性的需求。通过合理配置和使用日志工具,可以显著提升系统的稳定性和可靠性。