在Node.js中,可以使用多种方法来提取日志中的关键数据。以下是一些建议:
[INFO] 2021-08-01 12:00:00 User logged in: user123,可以使用正则表达式/\[INFO\] \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} User logged in: (\w+)/来提取用户名。const log = '[INFO] 2021-08-01 12:00:00 User logged in: user123';
const regex = /\[INFO\] \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} User logged in: (\w+)/;
const match = log.match(regex);
if (match) {
const username = match[1];
console.log('Extracted data:', username);
}
例如,使用winston库:
const winston = require('winston');
const logger = winston.createLogger({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.printf(({ timestamp, level, message }) => {
// 自定义解析逻辑
if (message.startsWith('User logged in:')) {
const username = message.split(' ')[3];
console.log('Extracted data:', username);
}
return `${timestamp} ${level}: ${message}`;
})
)
});
logger.info('User logged in: user123');
split、substring等)来提取关键数据。const log = 'INFO 2021-08-01 12:00:00 User logged in: user123';
const parts = log.split(' ');
const level = parts[0];
const timestamp = parts[1] + ' ' + parts[2] + ' ' + parts[3];
const message = parts.slice(4).join(' ');
if (message.startsWith('User logged in:')) {
const username = message.split(' ')[3];
console.log('Extracted data:', username);
}
根据您的需求和日志格式,可以选择最适合您的方法来提取关键数据。