il log viene salvato nella collection del rispettivo mese/anno

This commit is contained in:
Miki 2016-05-13 12:11:52 +02:00
parent d6744fe95d
commit 6271820f33
4 changed files with 30 additions and 70 deletions

View file

@ -28,16 +28,10 @@ func contains(s []Ips, e string) bool {
func consumer(id int) {
// var conn = dbs.rdb.Get()
// defer conn.Close()
for {
prod := <-consume[id]
// wg.Add(1)
// defer wg.Done()
cons := consumed{
user: prod.user,
logins: make([]string, 0),
@ -51,9 +45,6 @@ func consumer(id int) {
if login == "" {
log.Println("Login empty: ", prod.user)
cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue
}
sval := strings.Split(login, ":")
@ -61,9 +52,6 @@ func consumer(id int) {
if sval[1] == "" {
log.Println("Login format error: ", login, prod.user)
cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue
}
// se il timestamp della riga di login non e' corretto
@ -71,9 +59,6 @@ func consumer(id int) {
if err != nil {
log.Printf("Date Error: %+v - %s - %s\n", err, prod.user, login)
cons.logins = append(cons.logins, login)
// retval, _ := conn.Do("lrem", user, "0", login)
// log.Println("LREM retval: ", user, login, retval)
// return
continue
}
ml := MongoLogin{
@ -82,26 +67,20 @@ func consumer(id int) {
Ip: sval[2],
Date: time.Unix(date, 0),
}
// cerca se esiste gia' un documento con gli stessi User & Date
/*
docfind := []Ips{}
iter := dbs.ll.Find(bson.M{"user": prod.user, "date": time.Unix(date, 0)}).Select(bson.M{"ip": 1, "_id": 0}).Iter()
iter.All(&docfind)
if len(docfind) > 0 {
count.AddDuplicate()
if !contains(docfind, ml.Ip) {
fmt.Printf("Insert != IP for same date: user=%s - date=%s\n - newip=%s - oldip=%s\n", ml.User, ml.Date, docfind, ml.Ip)
// inserisce il login su Mongodb se gli IP sono !=
err := dbs.ll.Insert(ml)
if opts.Month != ml.Date.Format("0601") {
lt := dbs.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", ml.Date.Format("0601")))
err = lt.Insert(ml)
if err != nil {
log.Printf("Insert error: %+v - %s\n", err, cons.user)
log.Printf("Insert error: %+v - %s - %s\n", err, cons.user, lt.FullName)
count.AddErr()
cons.error = true
continue
}
if opts.Debug {
log.Printf("%s - %+v\n", lt.FullName, ml)
}
} else {
*/
// inserisce il login su Mongodb
err = dbs.ll.Insert(ml)
if err != nil {
@ -110,29 +89,18 @@ func consumer(id int) {
cons.error = true
continue
}
// }
// iter.Close()
if opts.Debug {
log.Printf("%+v - %+v\n", ml)
log.Printf("%+v\n", ml)
}
}
// if i < (len(prod.logins) - 1) {
cons.logins = append(cons.logins, login)
// cancella da Redis la riga di login inserita
// retval, _ := conn.Do("lrem", user, "0", login)
// if opts.Debug {
// log.Println("LREM retval: ", retval, user, login)
// fmt.Println("LREM retval: ", retval, user, login)
// }
// }
}
count.AddLog(len(prod.logins))
if opts.Debug {
fmt.Printf("CONS (%d): user=%s logins=%d in %v - active=%d\n", id, prod.user, len(prod.logins), time.Since(start), dbs.rdb.ActiveCount())
// log.Printf("CONS (%d): user=%s logins=%d in %v - active=%d\n", id, prod.user, len(prod.logins), time.Since(start), dbs.rdb.ActiveCount())
}
remove[id] <- cons

15
dbs.go
View file

@ -4,6 +4,7 @@ package main
import (
"github.com/garyburd/redigo/redis"
// "github.com/fzzy/radix/redis"
"fmt"
"log"
"os"
"time"
@ -71,17 +72,6 @@ func (db *Dbs) poolRedis() {
}
/*
func (db *Dbs) connectRedis() {
var err error
db.rdb, err = redis.Dial("tcp", db.RedisUri)
if err != nil {
log.Println("Redis connect Error: ", err.Error())
os.Exit(-1)
}
}
*/
func (db *Dbs) connectMongo() {
var err error
db.mdb, err = mgo.Dial(db.MongoUri)
@ -89,6 +79,5 @@ func (db *Dbs) connectMongo() {
log.Println("Mongodb connect Error: ", err.Error())
os.Exit(-3)
}
db.ll = db.mdb.DB("lastlogin").C("lastlogin_" + time.Now().Format("0601"))
// db.us = db.mdb.DB("dovecot").C("userlogin")
db.ll = db.mdb.DB("lastlogin").C(fmt.Sprintf("lastlogin_%s", opts.Month))
}

View file

@ -11,7 +11,7 @@ import (
)
const (
_VERSION = "v2.6.1"
_VERSION = "v2.7.0"
)
var (
@ -67,6 +67,8 @@ func main() {
fmt.Printf("Start: %+v\n", opts)
log.Printf("Start: %+v\n", opts)
opts.Month = start.Format("0601")
dbs.poolRedis()
defer dbs.rdb.Close()

View file

@ -27,6 +27,7 @@ type Options struct {
Xymon string
Influxdb string
Hostname string
Month string
}
func usage() {