aggiunta l'opzione DEBUG; log meno verboso.

This commit is contained in:
Miki 2015-11-17 12:16:25 +01:00
parent 28521afda2
commit 6d2901027e

48
main.go
View file

@ -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 <mongo uri> -r <redis uri> -t <ttl> -l <logfile> -v\n")
fmt.Println("Usage: llmongo -m <mongo uri> -r <redis uri> -t <ttl> -l <logfile> -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)
}