logger class
This commit is contained in:
parent
42fda5f465
commit
50c62ccae8
1 changed files with 46 additions and 23 deletions
69
llmongo.js
69
llmongo.js
|
@ -1,10 +1,33 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
var Redis = require('redis');
|
||||
|
||||
var MongoClient = require('mongodb').MongoClient
|
||||
var fs = require('fs')
|
||||
var Console = require('console').Console;
|
||||
|
||||
var redis, mongodb, lastlogin, mongoUri, redisUri;
|
||||
var redis, mongodb, lastlogin, mongoUri, redisUri, logname;
|
||||
|
||||
var pathname = process.argv[1].slice(0, process.argv[1].lastIndexOf('/'));
|
||||
|
||||
function Logger(path) {
|
||||
this.writestream = fs.createWriteStream(path+'/log/llmongo.log', { flags: 'a'});
|
||||
this.mylog = new Console(this.writestream, this.writestream);
|
||||
}
|
||||
|
||||
Logger.prototype.log = function(){
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
var string = args[0];
|
||||
args.shift();
|
||||
console.log(string + " - " + args );
|
||||
if (args.length > 0) {
|
||||
this.mylog.log.apply(this, ["%s "+string,(new Date()).toJSON()].concat(args));
|
||||
} else {
|
||||
this.mylog.log("%s "+string,(new Date()).toJSON());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
logger = new Logger(pathname);
|
||||
|
||||
var args = process.argv.slice(2);
|
||||
|
||||
|
@ -21,7 +44,7 @@ args.forEach(function(val, index, array){
|
|||
if(args[index+1].match(/\S+:\d+/)) {
|
||||
redisUri = args[index+1];
|
||||
} else {
|
||||
console.log("Wrong redis URI");
|
||||
logger.log("Wrong redis URI");
|
||||
process.exit(0);
|
||||
}
|
||||
break;
|
||||
|
@ -31,20 +54,20 @@ args.forEach(function(val, index, array){
|
|||
mongoUri = mongoUri || 'mongodb://127.0.0.1:27018/dovecot';
|
||||
redisUri = redisUri || 'redis-ll.mail.tiscali.sys:6379';
|
||||
|
||||
console.log("Connecting redis: ", redisUri);
|
||||
logger.log("Connecting redis: %s", redisUri);
|
||||
|
||||
redis = Redis.createClient(redisUri.split(':')[1], redisUri.split(':')[0]) //new Redis(redisUri);
|
||||
|
||||
redis.on("error", function (err) {
|
||||
console.log("Error redis" + err);
|
||||
logger.log("Error redis %s", err);
|
||||
process.exit(-99);
|
||||
});
|
||||
|
||||
console.log("Connecting mongodb: ", mongoUri);
|
||||
logger.log("Connecting mongodb: %s", mongoUri);
|
||||
|
||||
MongoClient.connect(mongoUri, function(err, db){
|
||||
if(err){
|
||||
console.log("Mongo connect error:", err);
|
||||
logger.log("Mongo connect error: %s", err);
|
||||
if (redis ) {
|
||||
redis.end();
|
||||
};
|
||||
|
@ -52,7 +75,7 @@ MongoClient.connect(mongoUri, function(err, db){
|
|||
}
|
||||
lastlogin = db.collection('lastlogin');
|
||||
|
||||
var quit = function(){
|
||||
function quit(){
|
||||
redis.end();
|
||||
db.close();
|
||||
process.exit(0);
|
||||
|
@ -60,44 +83,44 @@ MongoClient.connect(mongoUri, function(err, db){
|
|||
|
||||
// Legge uno user dal SET llindex e lo elimina; viene eseguita fino a quando ci sono users.
|
||||
// Calcola quante righe di lastlogin ci sono e chiama la funzione ricorsiva readLogs
|
||||
var readUsers = function() {
|
||||
console.log("readUsers");
|
||||
function readUsers() {
|
||||
logger.log("readUsers");
|
||||
redis.spop('llindex', function(err, user){
|
||||
if( err ) {
|
||||
console.log("Error redis spop llindex: ", err);
|
||||
logger.log("Error redis spop llindex: %s", err);
|
||||
quit();
|
||||
process.exit(-1);
|
||||
}
|
||||
if( user ) {
|
||||
console.log("readLogs");
|
||||
logger.log("readLogs");
|
||||
redis.llen(user, function(err, llen){
|
||||
if (err) {
|
||||
console.log("Error redis llen "+user+": ", err)
|
||||
logger.log("Error redis llen %s: ",user, err)
|
||||
quit();
|
||||
process.exit(-2);
|
||||
} else {
|
||||
console.log("logslen: ", llen);
|
||||
logger.log("logslen: %s", llen);
|
||||
|
||||
// Legge una riga di log, la elimina da redis e la inserisce su mongo.
|
||||
// Viene eseguito n-1 volte, con n = numero di righe di log.
|
||||
var readLogs = function(lindex, user, len) {
|
||||
function readLogs(lindex, user, len) {
|
||||
if (lindex == len ){
|
||||
// raggiunto il numero di righe da leggere, riparte con un altro user ( se esiste )
|
||||
console.log("Done: ", user, lindex);
|
||||
logger.log("Done: %s - ", user, lindex);
|
||||
readUsers();
|
||||
} else {
|
||||
console.log("rpop log: ", user);
|
||||
logger.log("rpop log: %s", user);
|
||||
redis.rpop(user, function(err, log){
|
||||
if ( err ) {
|
||||
console.log("Error redis rpop "+user+": ",err);
|
||||
logger.log("Error redis rpop %s: ",user,err);
|
||||
quit();
|
||||
process.exit(-3);
|
||||
} else {
|
||||
console.log("log: ", log);
|
||||
logger.log("log: %s", log);
|
||||
// imap:1432630259:10.39.75.60
|
||||
var slog = log.split(':');
|
||||
var data = new Date(parseInt(slog[1]+"000"));
|
||||
console.log("Data: ", data, slog[1]);
|
||||
// logger.log("Data: %s ", data, slog[1]);
|
||||
lastlogin.insert({
|
||||
user: user,
|
||||
protocol: slog[0],
|
||||
|
@ -105,14 +128,14 @@ MongoClient.connect(mongoUri, function(err, db){
|
|||
ip: slog[2],
|
||||
}, function(err, r){
|
||||
if(err){
|
||||
console.log("insert error: ",err);
|
||||
logger.log("insert error: %s", err);
|
||||
redis.rpush(user, log, function(err, result){
|
||||
quit();
|
||||
process.exit(-4);
|
||||
});
|
||||
} else {
|
||||
// Salvato il log su mongo, legge il successivo.
|
||||
console.log("Saved: ", log, lindex);
|
||||
logger.log("Saved: %s - ", log, user, lindex);
|
||||
readLogs(lindex+1, user, len);
|
||||
}
|
||||
});
|
||||
|
@ -127,7 +150,7 @@ MongoClient.connect(mongoUri, function(err, db){
|
|||
});
|
||||
} else {
|
||||
// Se non ci sono piu' users, chiude i DB ed esce.
|
||||
console.log("quit readUsers");
|
||||
logger.log("quit readUsers");
|
||||
quit();
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue