在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);}根据您的需求和日志格式,可以选择最适合您的方法来提取关键数据。