在Debian上设置Node.js应用程序的日志格式,可以通过多种方式实现,包括使用内置的日志模块、第三方日志库或配置反向代理服务器(如Nginx)来记录请求日志。以下是一些常见的方法:
console模块虽然console模块不是专门用于日志记录的,但它可以用于简单的日志记录需求。
const http = require('http');
const server = http.createServer((req, res) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
winston)winston是一个非常流行的Node.js日志库,支持多种传输和格式化选项。
winston:npm install winston
winston:const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
winston.format.printf(({ timestamp, level, message }) => {
return `${timestamp} ${level}: ${message}`;
})
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
const server = http.createServer((req, res) => {
logger.info(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
});
server.listen(3000, () => {
logger.info('Server running at http://localhost:3000/');
});
如果你使用Nginx作为反向代理服务器,可以在Nginx配置文件中设置日志格式。
/etc/nginx/nginx.conf或/etc/nginx/sites-available/default):http {
log_format custom '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log custom;
error_log /var/log/nginx/error.log;
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
sudo nginx -s reload
通过这些方法,你可以在Debian上设置Node.js应用程序的日志格式,以满足不同的需求。