From 6d2901027e8374a9f19bd068170efd8dd819ea8e Mon Sep 17 00:00:00 2001 From: Miki Date: Tue, 17 Nov 2015 12:16:25 +0100 Subject: [PATCH] aggiunta l'opzione DEBUG; log meno verboso. --- main.go | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/main.go b/main.go index 823e771..5d34709 100644 --- a/main.go +++ b/main.go @@ -18,11 +18,13 @@ type Options struct { CurrentPath string Exe string LogFile string + Timeout bool + Debug bool Version bool } const ( - _VERSION = "v1.1.4" + _VERSION = "v1.2.1" ) var ( @@ -30,10 +32,13 @@ var ( RedisTTL: time.Hour * 11688, // 16 mesi LogFile: "log/llmongo.log", } + + loop = true + ttl = time.Second * 55 ) func usage() { - fmt.Println("Usage: llmongo -m -r -t -l -v\n") + fmt.Println("Usage: llmongo -m -r -t -l -T -D -v\n") os.Exit(0) } @@ -53,6 +58,12 @@ func init() { flag.StringVar(&opts.LogFile, "l", opts.LogFile, "Logs filename") flag.DurationVar(&opts.RedisTTL, "t", opts.RedisTTL, "Redis TTL") flag.BoolVar(&opts.Version, "v", false, "Version") + flag.BoolVar(&opts.Timeout, "T", false, "Timeout") + flag.BoolVar(&opts.Debug, "D", false, "Debug") +} + +func stopLoop() { + loop = false } func main() { @@ -86,12 +97,19 @@ func main() { dbs.connectMongo() defer dbs.mdb.Close() + if opts.Timeout { + time.AfterFunc(ttl, stopLoop) + } + count := 0 - for { + errCount := 0 + for loop { // estrae un userid dalla lista degli utenti che hanno fatto login spop := dbs.rdb.Cmd("spop", "llindex") user, err := spop.Str() - log.Printf("SPOP: %+v %+v\n", spop, user) + if opts.Debug { + log.Printf("SPOP: %+v %+v\n", spop, user) + } // se non ci sono piu' userid esce if err != nil { log.Printf("LLINDEX empty: %v\n", err) @@ -103,13 +121,17 @@ func main() { // Estrae l'ultimo login dell'utente 'user' val, err = dbs.rdb.Cmd("lindex", user, "-1").Str() if err != nil { - log.Printf("LINDEX error: %+v\n", err) + if opts.Debug { + log.Printf("LINDEX error: %+v\n", err) + } // se ha trovato user e righe di login if lastval != "" { // reinserisce l'ultimo login e imposta il ttl su Redis retval := dbs.rdb.Cmd("lpush", user, lastval) ttl := dbs.rdb.Cmd("expire", user, opts.RedisTTL.Seconds()) - log.Println("LPUSH retval: ", retval, ttl, user, lastval, opts.RedisTTL.Seconds()) + if opts.Debug { + log.Println("LPUSH retval: ", retval, ttl, user, lastval, opts.RedisTTL.Seconds()) + } } break } @@ -140,11 +162,6 @@ func main() { Ip: sval[2], Date: time.Unix(date, 0), } - // ul := UserLogin{ - // User: user, - // Date: time.Unix(date, 0), - // Lock: false, - // } ind := Index{ User: user, Date: time.Unix(date, 0), @@ -156,6 +173,7 @@ func main() { log.Printf("Insert error: %+v\n", err) // se l'errore non e' "duplicate key error" salta al prossimo senza cancellare niente if !strings.Contains(err.Error(), "E11000") { + errCount += 1 continue } } @@ -163,11 +181,13 @@ func main() { // _ err := dbs.us.Upsert(ind, ul) // cancella da Redis la riga di login inserita retval := dbs.rdb.Cmd("lrem", user, "-1", val) - log.Println("LREM retval: ", retval, user, val) + if opts.Debug { + log.Println("LREM retval: ", retval, user, val) + } lastval = val } } - fmt.Printf("Stop %v - %d\n", time.Since(start), count) - log.Printf("Stop %v - %d\n", time.Since(start), count) + fmt.Printf("Stop %v - login: %d - errors: %d\n\r", time.Since(start), count, errCount) + log.Printf("Stop %v - login: %d - errors: %d\n\r", time.Since(start), count, errCount) }