在Debian系统中自定义JavaScript日志格式,通常涉及以下几个步骤:
选择日志库:
首先,你需要选择一个适合的JavaScript日志库。常见的日志库有winston、morgan(主要用于HTTP请求日志)等。
安装日志库:
使用npm或yarn来安装你选择的日志库。例如,如果你选择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' })
]
});
logger.info('Hello, world!');
自定义日志格式: 你可以根据需要进一步自定义日志格式。例如,添加请求ID、用户信息等:
const winston = require('winston');
const { v4: uuidv4 } = require('uuid');
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}`;
}),
winston.format.json()
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
// 添加请求ID和用户信息
logger.format((info, opts) => {
if (opts.req && opts.req.headers['x-request-id']) {
info.requestId = opts.req.headers['x-request-id'];
}
if (opts.req && opts.req.user) {
info.user = opts.req.user;
}
return info;
});
// 示例请求处理函数
function handleRequest(req, res) {
const requestId = uuidv4();
req.headers['x-request-id'] = requestId;
logger.info('Handling request', { req, res });
// 处理请求...
}
测试日志输出: 运行你的应用程序并测试日志输出,确保日志格式符合你的预期。
通过以上步骤,你可以在Debian系统中自定义JavaScript日志格式。根据你的具体需求,可以进一步调整和扩展日志配置。