From 3300db832bdbb37500c7d499b1a279d45172aa31 Mon Sep 17 00:00:00 2001 From: youngsterxyf Date: Thu, 24 Mar 2016 22:43:57 +0800 Subject: [PATCH 1/2] in `session` package, add a helpful variable `SLogger` to help subpackage logging information --- session/ledis/ledis_session.go | 2 +- session/mysql/sess_mysql.go | 10 ++++++++-- session/sess_file.go | 10 +++++----- session/session.go | 17 +++++++++++++++++ 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/session/ledis/ledis_session.go b/session/ledis/ledis_session.go index 68f37b08..6b201f56 100644 --- a/session/ledis/ledis_session.go +++ b/session/ledis/ledis_session.go @@ -100,7 +100,7 @@ func (lp *Provider) SessionInit(maxlifetime int64, savePath string) error { nowLedis, err := ledis.Open(cfg) c, err = nowLedis.Select(lp.db) if err != nil { - println(err) + session.SLogger.Println(err) return nil } return nil diff --git a/session/mysql/sess_mysql.go b/session/mysql/sess_mysql.go index 969d26c9..93ea31ed 100644 --- a/session/mysql/sess_mysql.go +++ b/session/mysql/sess_mysql.go @@ -1,3 +1,4 @@ + // Copyright 2014 beego Author. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -111,11 +112,14 @@ func (st *SessionStore) SessionRelease(w http.ResponseWriter) { defer st.c.Close() b, err := session.EncodeGob(st.values) if err != nil { + session.SLogger.Println(err) return } - st.c.Exec("UPDATE "+TableName+" set `session_data`=?, `session_expiry`=? where session_key=?", + _, err = st.c.Exec("UPDATE "+TableName+" set `session_data`=?, `session_expiry`=? where session_key=?", b, time.Now().Unix(), st.sid) - + if err != nil { + session.SLogger.Println(err) + } } // Provider mysql session provider @@ -128,6 +132,7 @@ type Provider struct { func (mp *Provider) connectInit() *sql.DB { db, e := sql.Open("mysql", mp.savePath) if e != nil { + session.SLogger.Println(e) return nil } return db @@ -223,6 +228,7 @@ func (mp *Provider) SessionAll() int { var total int err := c.QueryRow("SELECT count(*) as num from " + TableName).Scan(&total) if err != nil { + session.SLogger.Println(err) return 0 } return total diff --git a/session/sess_file.go b/session/sess_file.go index 9265b030..dda56b3a 100644 --- a/session/sess_file.go +++ b/session/sess_file.go @@ -16,7 +16,6 @@ package session import ( "errors" - "fmt" "io" "io/ioutil" "net/http" @@ -82,6 +81,7 @@ func (fs *FileSessionStore) SessionID() string { func (fs *FileSessionStore) SessionRelease(w http.ResponseWriter) { b, err := EncodeGob(fs.values) if err != nil { + SLogger.Println(err) return } _, err = os.Stat(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid)) @@ -123,7 +123,7 @@ func (fp *FileProvider) SessionRead(sid string) (Store, error) { err := os.MkdirAll(path.Join(fp.savePath, string(sid[0]), string(sid[1])), 0777) if err != nil { - println(err.Error()) + SLogger.Println(err.Error()) } _, err = os.Stat(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid)) var f *os.File @@ -191,7 +191,7 @@ func (fp *FileProvider) SessionAll() int { return a.visit(path, f, err) }) if err != nil { - fmt.Printf("filepath.Walk() returned %v\n", err) + SLogger.Printf("filepath.Walk() returned %v\n", err) return 0 } return a.total @@ -205,11 +205,11 @@ func (fp *FileProvider) SessionRegenerate(oldsid, sid string) (Store, error) { err := os.MkdirAll(path.Join(fp.savePath, string(oldsid[0]), string(oldsid[1])), 0777) if err != nil { - println(err.Error()) + SLogger.Println(err.Error()) } err = os.MkdirAll(path.Join(fp.savePath, string(sid[0]), string(sid[1])), 0777) if err != nil { - println(err.Error()) + SLogger.Println(err.Error()) } _, err = os.Stat(path.Join(fp.savePath, string(sid[0]), string(sid[1]), sid)) var newf *os.File diff --git a/session/session.go b/session/session.go index 9fe99a17..09c200c5 100644 --- a/session/session.go +++ b/session/session.go @@ -32,8 +32,11 @@ import ( "encoding/hex" "encoding/json" "fmt" + "io" + "log" "net/http" "net/url" + "os" "time" ) @@ -61,6 +64,8 @@ type Provider interface { var provides = make(map[string]Provider) +var SLogger = newSessionLog(os.Stderr) + // Register makes a session provide available by the provided name. // If Register is called twice with the same name or if driver is nil, // it panics. @@ -296,3 +301,15 @@ func (manager *Manager) isSecure(req *http.Request) bool { } return true } + +// Log implement the log.Logger +type sessionLog struct { + *log.Logger +} + +// NewLog set io.Writer to create a Logger for session. +func newSessionLog(out io.Writer) *sessionLog { + sl := new(sessionLog) + sl.Logger = log.New(out, "[SESSION]", 1e9) + return sl +} From 56860d1feacaae15cd1cd53d5b600516bb978b61 Mon Sep 17 00:00:00 2001 From: youngsterxyf Date: Fri, 25 Mar 2016 10:48:59 +0800 Subject: [PATCH 2/2] not just export a variable --- session/ledis/ledis_session.go | 2 +- session/mysql/sess_mysql.go | 9 +-------- session/sess_file.go | 2 ++ session/session.go | 11 ++++++----- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/session/ledis/ledis_session.go b/session/ledis/ledis_session.go index 6b201f56..68f37b08 100644 --- a/session/ledis/ledis_session.go +++ b/session/ledis/ledis_session.go @@ -100,7 +100,7 @@ func (lp *Provider) SessionInit(maxlifetime int64, savePath string) error { nowLedis, err := ledis.Open(cfg) c, err = nowLedis.Select(lp.db) if err != nil { - session.SLogger.Println(err) + println(err) return nil } return nil diff --git a/session/mysql/sess_mysql.go b/session/mysql/sess_mysql.go index 93ea31ed..838ec669 100644 --- a/session/mysql/sess_mysql.go +++ b/session/mysql/sess_mysql.go @@ -1,4 +1,3 @@ - // Copyright 2014 beego Author. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -112,14 +111,10 @@ func (st *SessionStore) SessionRelease(w http.ResponseWriter) { defer st.c.Close() b, err := session.EncodeGob(st.values) if err != nil { - session.SLogger.Println(err) return } - _, err = st.c.Exec("UPDATE "+TableName+" set `session_data`=?, `session_expiry`=? where session_key=?", + st.c.Exec("UPDATE "+TableName+" set `session_data`=?, `session_expiry`=? where session_key=?", b, time.Now().Unix(), st.sid) - if err != nil { - session.SLogger.Println(err) - } } // Provider mysql session provider @@ -132,7 +127,6 @@ type Provider struct { func (mp *Provider) connectInit() *sql.DB { db, e := sql.Open("mysql", mp.savePath) if e != nil { - session.SLogger.Println(e) return nil } return db @@ -228,7 +222,6 @@ func (mp *Provider) SessionAll() int { var total int err := c.QueryRow("SELECT count(*) as num from " + TableName).Scan(&total) if err != nil { - session.SLogger.Println(err) return 0 } return total diff --git a/session/sess_file.go b/session/sess_file.go index dda56b3a..91acfcd4 100644 --- a/session/sess_file.go +++ b/session/sess_file.go @@ -88,8 +88,10 @@ func (fs *FileSessionStore) SessionRelease(w http.ResponseWriter) { var f *os.File if err == nil { f, err = os.OpenFile(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid), os.O_RDWR, 0777) + SLogger.Println(err) } else if os.IsNotExist(err) { f, err = os.Create(path.Join(filepder.savePath, string(fs.sid[0]), string(fs.sid[1]), fs.sid)) + SLogger.Println(err) } else { return } diff --git a/session/session.go b/session/session.go index 09c200c5..2c4b9351 100644 --- a/session/session.go +++ b/session/session.go @@ -64,7 +64,8 @@ type Provider interface { var provides = make(map[string]Provider) -var SLogger = newSessionLog(os.Stderr) +// SLogger a helpful variable to log information about session +var SLogger = NewSessionLog(os.Stderr) // Register makes a session provide available by the provided name. // If Register is called twice with the same name or if driver is nil, @@ -303,13 +304,13 @@ func (manager *Manager) isSecure(req *http.Request) bool { } // Log implement the log.Logger -type sessionLog struct { +type Log struct { *log.Logger } -// NewLog set io.Writer to create a Logger for session. -func newSessionLog(out io.Writer) *sessionLog { - sl := new(sessionLog) +// NewSessionLog set io.Writer to create a Logger for session. +func NewSessionLog(out io.Writer) *Log { + sl := new(Log) sl.Logger = log.New(out, "[SESSION]", 1e9) return sl }