我正在创建一个用nodejs编写的服务器,它通过server.on('connection', function(conn) {
接收一个文件,该文件将该数据存储在缓冲区中。
此数据是一个日志文件,其中每行包含3个重要列:
时间 - 源文件 - 消息
E.g:
2014-02-05 22:12:33,268 - test.py:__init__() - This is message
2014-02-05 22:12:33,268 - test.py:__init__() - This is message 2
我想将这些数据存储在mongoDB系统中,将系统中接收的日志文件和这些行分成列。我记得使用客户端IP作为密钥。
现在我正在创建我放入孔数据的文件,因为我不知道如何逐行读取这种存储的数据,因为readline模块仅用于文件。
任何帮助都会很棒。感谢
这是我服务器的小代码:
var net = require('net'),
fs = require('fs'),
buffer = require('buffer');
var server = net.createServer(function(conn) {
console.log('server connected');
});
var HOST = '127.0.0.1';
var PORT = '9001';
var DEST_DIR = './logs';
server.listen(PORT, HOST, function() {
// Check if DEST_DIR exists
if (!fs.existsSync(DEST_DIR)) {
console.log(DEST_DIR + ' not found. Creating it now...');
fs.mkdir('logs', '700');
}
//listening
console.log('Listening on port ' + PORT + '\n');
server.on('connection', function(conn) {
var current_time = Date.now();
console.log('connection made...\n')
conn.on('data', function(data) {
console.log('data received');
console.log('data is: \n' + data);
// Create file
fs.writeFile(DEST_DIR + '/' + current_time + '.txt', data, function(err){
if(err){
console.log(err);
}else{
console.log("File saved");
}
});
});
})
});
答案 0 :(得分:0)
拆分换行符\n
上的数据。对于每个条目,拆分列,将每列添加为对象的属性,然后将对象存储在mongoDB中。
data = "time / source file / message \n time / source file / message";
var item, format = ['time', 'source', 'message'];
data = data.toString().split('\n');
while(item = data.pop()){
item = item.split(/\W-\W/);
var obj = {};
item.forEach(function(v, i){
obj[format[i]] = v;
});
// save the object to db
}