在Debian系统上配置Node.js日志输出,可采用console.log、winston、morgan、syslog及环境变量等方法。基础调试用console.log,生产环境推荐winston实现多传输和格式化,Express应用适合morgan,系统日志整合用syslog,环境变量可动态控制日志级别与输出位置。
console.logconsole.log。在开发调试阶段,这种方式简洁明了,无需额外安装任何库。
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
console.log('Hello World!');
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
这种方法足够简单,但在生产环境中难以满足日志级别、文件输出、格式化等需求。因此,以下方法更可靠。
winston和morgan是社区中使用最广泛的两个,各有侧重。
winstonwinston功能全面,支持多种传输方式:控制台、文件、HTTP等。
1. 安装:
npm install winston
2. 配置示例:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.Console(),
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('Error occurred');
开发环境下可额外添加控制台输出,格式更可读;生产环境直接输出JSON,方便后续日志分析系统处理。
morganmorgan是专门记录HTTP请求日志的理想选择,一行代码即可生效。
1. 安装:
npm install morgan
2. 配置:
const express = require('express');
const morgan = require('morgan');
const app = express();
const port = 3000;
app.use(morgan('combined'));
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
morgan的格式参数灵活,combined为标准Apache格式,包含客户端IP、请求方法、响应状态等;若需更简洁,可用short或dev。
/var/log/syslog),可借助syslog模块,实现日志与系统统一管理。
1. 安装:
npm install syslog
2. 配置示例:
const syslog = require('syslog');
const logger = syslog.createClient(syslog.LOG_INFO, 'my-node-app');
logger.info('Hello World!');
logger.error('Error occurred');
此类日志会携带应用标识(my-node-app),在/var/log/syslog中易于识别,适合与系统其他服务日志混排的场景。
config.js:
module.exports = {
logLevel: process.env.LOG_LEVEL || 'info',
logFile: process.env.LOG_FILE || 'combined.log'
};
2. 在应用中使用:
const winston = require('winston');
const config = require('./config');
const logger = winston.createLogger({
level: config.logLevel,
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: config.logFile })
]
});
logger.info('Hello World!');
启动时设置环境变量LOG_LEVEL=debug或LOG_FILE=/var/log/myapp.log,即可控制日志详略和落盘位置,非常方便。
console.log或morgan的dev模式,上线后用winston输出到文件,再配合系统日志做兜底。选择哪种方式,取决于应用架构和运维习惯——没有绝对的最佳,只有最适合的。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述