From ecf24640fd0f62c69bcba8e2099903f2e06dd7e5 Mon Sep 17 00:00:00 2001 From: youngsterxyf Date: Sat, 23 Jan 2016 16:24:58 +0800 Subject: [PATCH 1/7] fix issue #1566 --- logs/conn.go | 9 ++++-- logs/console.go | 9 ++++-- logs/es/es.go | 8 ++--- logs/file.go | 45 +++------------------------ logs/log.go | 81 ++++++++++++++++++++++++++++++++++++++----------- logs/smtp.go | 4 +-- 6 files changed, 88 insertions(+), 68 deletions(-) diff --git a/logs/conn.go b/logs/conn.go index 3655bf51..2a29688a 100644 --- a/logs/conn.go +++ b/logs/conn.go @@ -19,6 +19,7 @@ import ( "io" "log" "net" + "time" ) // connWriter implements LoggerInterface. @@ -48,7 +49,7 @@ func (c *connWriter) Init(jsonconfig string) error { // WriteMsg write message in connection. // if connection is down, try to re-connect. -func (c *connWriter) WriteMsg(msg string, level int) error { +func (c *connWriter) WriteMsg(when time.Time, msg string, level int) error { if level > c.Level { return nil } @@ -62,6 +63,10 @@ func (c *connWriter) WriteMsg(msg string, level int) error { if c.ReconnectOnMsg { defer c.innerWriter.Close() } + + logTimeStr := formatLogTime(when) + msg = logTimeStr + msg + c.lg.Println(msg) return nil } @@ -94,7 +99,7 @@ func (c *connWriter) connect() error { } c.innerWriter = conn - c.lg = log.New(conn, "", log.Ldate|log.Ltime) + c.lg = log.New(conn, "", 0) return nil } diff --git a/logs/console.go b/logs/console.go index 23e8ebca..48d1e5b2 100644 --- a/logs/console.go +++ b/logs/console.go @@ -19,6 +19,7 @@ import ( "log" "os" "runtime" + "time" ) // brush is a color join function @@ -53,7 +54,7 @@ type consoleWriter struct { // NewConsole create ConsoleWriter returning as LoggerInterface. func NewConsole() Logger { cw := &consoleWriter{ - lg: log.New(os.Stdout, "", log.Ldate|log.Ltime), + lg: log.New(os.Stdout, "", 0), Level: LevelDebug, } return cw @@ -69,10 +70,14 @@ func (c *consoleWriter) Init(jsonconfig string) error { } // WriteMsg write message in console. -func (c *consoleWriter) WriteMsg(msg string, level int) error { +func (c *consoleWriter) WriteMsg(when time.Time, msg string, level int) error { if level > c.Level { return nil } + + logTimeStr := formatLogTime(when) + msg = logTimeStr + msg + if goos := runtime.GOOS; goos == "windows" { c.lg.Println(msg) return nil diff --git a/logs/es/es.go b/logs/es/es.go index f8dc5f65..397ca2ef 100644 --- a/logs/es/es.go +++ b/logs/es/es.go @@ -48,16 +48,16 @@ func (el *esLogger) Init(jsonconfig string) error { } // WriteMsg will write the msg and level into es -func (el *esLogger) WriteMsg(msg string, level int) error { +func (el *esLogger) WriteMsg(when time.Time, msg string, level int) error { if level > el.Level { return nil } - t := time.Now() + vals := make(map[string]interface{}) - vals["@timestamp"] = t.Format(time.RFC3339) + vals["@timestamp"] = when.Format(time.RFC3339) vals["@msg"] = msg d := goes.Document{ - Index: fmt.Sprintf("%04d.%02d.%02d", t.Year(), t.Month(), t.Day()), + Index: fmt.Sprintf("%04d.%02d.%02d", when.Year(), when.Month(), when.Day()), Type: "logs", Fields: vals, } diff --git a/logs/file.go b/logs/file.go index 0eae734a..16bf29c2 100644 --- a/logs/file.go +++ b/logs/file.go @@ -114,50 +114,15 @@ func (w *fileLogWriter) needRotate(size int, day int) bool { } // WriteMsg write logger message into file. -func (w *fileLogWriter) WriteMsg(msg string, level int) error { +func (w *fileLogWriter) WriteMsg(when time.Time, msg string, level int) error { if level > w.Level { return nil } //2016/01/12 21:34:33 - now := time.Now() - y, mo, d := now.Date() - h, mi, s := now.Clock() - //len(2006/01/02 15:03:04)==19 - var buf [20]byte - t := 3 - for y >= 10 { - p := y / 10 - buf[t] = byte('0' + y - p*10) - y = p - t-- - } - buf[0] = byte('0' + y) - buf[4] = '/' - if mo > 9 { - buf[5] = '1' - buf[6] = byte('0' + mo - 9) - } else { - buf[5] = '0' - buf[6] = byte('0' + mo) - } - buf[7] = '/' - t = d / 10 - buf[8] = byte('0' + t) - buf[9] = byte('0' + d - t*10) - buf[10] = ' ' - t = h / 10 - buf[11] = byte('0' + t) - buf[12] = byte('0' + h - t*10) - buf[13] = ':' - t = mi / 10 - buf[14] = byte('0' + t) - buf[15] = byte('0' + mi - t*10) - buf[16] = ':' - t = s / 10 - buf[17] = byte('0' + t) - buf[18] = byte('0' + s - t*10) - buf[19] = ' ' - msg = string(buf[0:]) + msg + "\n" + // now := time.Now() + d := when.Day() + logTimeStr := formatLogTime(when) + msg = logTimeStr + msg + "\n" if w.Rotate { if w.needRotate(len(msg), d) { diff --git a/logs/log.go b/logs/log.go index ccaaa3ad..0c4ac13a 100644 --- a/logs/log.go +++ b/logs/log.go @@ -40,6 +40,7 @@ import ( "runtime" "strconv" "sync" + "time" ) // RFC5424 log message levels. @@ -68,7 +69,7 @@ type loggerType func() Logger // Logger defines the behavior of a log provider. type Logger interface { Init(config string) error - WriteMsg(msg string, level int) error + WriteMsg(when time.Time, msg string, level int) error Destroy() Flush() } @@ -108,6 +109,7 @@ type nameLogger struct { type logMsg struct { level int msg string + when time.Time } var logMsgPool *sync.Pool @@ -173,16 +175,16 @@ func (bl *BeeLogger) DelLogger(adapterName string) error { return nil } -func (bl *BeeLogger) writeToLoggers(msg string, level int) { +func (bl *BeeLogger) writeToLoggers(when time.Time, msg string, level int) { for _, l := range bl.outputs { - err := l.WriteMsg(msg, level) + err := l.WriteMsg(when, msg, level) if err != nil { fmt.Fprintf(os.Stderr, "unable to WriteMsg to adapter:%v,error:%v\n", l.name, err) } } } -func (bl *BeeLogger) writeMsg(logLevel int, msg string) error { +func (bl *BeeLogger) writeMsg(logLevel int, msg string, when time.Time) error { if bl.enableFuncCallDepth { _, file, line, ok := runtime.Caller(bl.loggerFuncCallDepth) if !ok { @@ -196,9 +198,10 @@ func (bl *BeeLogger) writeMsg(logLevel int, msg string) error { lm := logMsgPool.Get().(*logMsg) lm.level = logLevel lm.msg = msg + lm.when = when bl.msgChan <- lm } else { - bl.writeToLoggers(msg, logLevel) + bl.writeToLoggers(when, msg, logLevel) } return nil } @@ -231,7 +234,7 @@ func (bl *BeeLogger) startLogger() { for { select { case bm := <-bl.msgChan: - bl.writeToLoggers(bm.msg, bm.level) + bl.writeToLoggers(bm.when, bm.msg, bm.level) logMsgPool.Put(bm) } } @@ -243,7 +246,7 @@ func (bl *BeeLogger) Emergency(format string, v ...interface{}) { return } msg := fmt.Sprintf("[M] "+format, v...) - bl.writeMsg(LevelEmergency, msg) + bl.writeMsg(LevelEmergency, msg, time.Now()) } // Alert Log ALERT level message. @@ -252,7 +255,7 @@ func (bl *BeeLogger) Alert(format string, v ...interface{}) { return } msg := fmt.Sprintf("[A] "+format, v...) - bl.writeMsg(LevelAlert, msg) + bl.writeMsg(LevelAlert, msg, time.Now()) } // Critical Log CRITICAL level message. @@ -261,7 +264,7 @@ func (bl *BeeLogger) Critical(format string, v ...interface{}) { return } msg := fmt.Sprintf("[C] "+format, v...) - bl.writeMsg(LevelCritical, msg) + bl.writeMsg(LevelCritical, msg, time.Now()) } // Error Log ERROR level message. @@ -270,7 +273,7 @@ func (bl *BeeLogger) Error(format string, v ...interface{}) { return } msg := fmt.Sprintf("[E] "+format, v...) - bl.writeMsg(LevelError, msg) + bl.writeMsg(LevelError, msg, time.Now()) } // Warning Log WARNING level message. @@ -279,7 +282,7 @@ func (bl *BeeLogger) Warning(format string, v ...interface{}) { return } msg := fmt.Sprintf("[W] "+format, v...) - bl.writeMsg(LevelWarning, msg) + bl.writeMsg(LevelWarning, msg, time.Now()) } // Notice Log NOTICE level message. @@ -288,7 +291,7 @@ func (bl *BeeLogger) Notice(format string, v ...interface{}) { return } msg := fmt.Sprintf("[N] "+format, v...) - bl.writeMsg(LevelNotice, msg) + bl.writeMsg(LevelNotice, msg, time.Now()) } // Informational Log INFORMATIONAL level message. @@ -297,7 +300,7 @@ func (bl *BeeLogger) Informational(format string, v ...interface{}) { return } msg := fmt.Sprintf("[I] "+format, v...) - bl.writeMsg(LevelInformational, msg) + bl.writeMsg(LevelInformational, msg, time.Now()) } // Debug Log DEBUG level message. @@ -306,7 +309,7 @@ func (bl *BeeLogger) Debug(format string, v ...interface{}) { return } msg := fmt.Sprintf("[D] "+format, v...) - bl.writeMsg(LevelDebug, msg) + bl.writeMsg(LevelDebug, msg, time.Now()) } // Warn Log WARN level message. @@ -316,7 +319,7 @@ func (bl *BeeLogger) Warn(format string, v ...interface{}) { return } msg := fmt.Sprintf("[W] "+format, v...) - bl.writeMsg(LevelWarning, msg) + bl.writeMsg(LevelWarning, msg, time.Now()) } // Info Log INFO level message. @@ -326,7 +329,7 @@ func (bl *BeeLogger) Info(format string, v ...interface{}) { return } msg := fmt.Sprintf("[I] "+format, v...) - bl.writeMsg(LevelInformational, msg) + bl.writeMsg(LevelInformational, msg, time.Now()) } // Trace Log TRACE level message. @@ -336,7 +339,7 @@ func (bl *BeeLogger) Trace(format string, v ...interface{}) { return } msg := fmt.Sprintf("[D] "+format, v...) - bl.writeMsg(LevelDebug, msg) + bl.writeMsg(LevelDebug, msg, time.Now()) } // Flush flush all chan data. @@ -351,7 +354,7 @@ func (bl *BeeLogger) Close() { for { if len(bl.msgChan) > 0 { bm := <-bl.msgChan - bl.writeToLoggers(bm.msg, bm.level) + bl.writeToLoggers(bm.when, bm.msg, bm.level) logMsgPool.Put(bm) continue } @@ -362,3 +365,45 @@ func (bl *BeeLogger) Close() { l.Destroy() } } + +func formatLogTime(when time.Time) string { + y, mo, d := when.Date() + h, mi, s := when.Clock() + //len(2006/01/02 15:03:04)==19 + var buf [20]byte + t := 3 + for y >= 10 { + p := y / 10 + buf[t] = byte('0' + y - p*10) + y = p + t-- + } + buf[0] = byte('0' + y) + buf[4] = '/' + if mo > 9 { + buf[5] = '1' + buf[6] = byte('0' + mo - 9) + } else { + buf[5] = '0' + buf[6] = byte('0' + mo) + } + buf[7] = '/' + t = d / 10 + buf[8] = byte('0' + t) + buf[9] = byte('0' + d - t*10) + buf[10] = ' ' + t = h / 10 + buf[11] = byte('0' + t) + buf[12] = byte('0' + h - t*10) + buf[13] = ':' + t = mi / 10 + buf[14] = byte('0' + t) + buf[15] = byte('0' + mi - t*10) + buf[16] = ':' + t = s / 10 + buf[17] = byte('0' + t) + buf[18] = byte('0' + s - t*10) + buf[19] = ' ' + + return string(buf[0:]) +} diff --git a/logs/smtp.go b/logs/smtp.go index 748462f9..47f5a0c6 100644 --- a/logs/smtp.go +++ b/logs/smtp.go @@ -126,7 +126,7 @@ func (s *SMTPWriter) sendMail(hostAddressWithPort string, auth smtp.Auth, fromAd // WriteMsg write message in smtp writer. // it will send an email with subject and only this message. -func (s *SMTPWriter) WriteMsg(msg string, level int) error { +func (s *SMTPWriter) WriteMsg(when time.Time, msg string, level int) error { if level > s.Level { return nil } @@ -140,7 +140,7 @@ func (s *SMTPWriter) WriteMsg(msg string, level int) error { // and send the email all in one step. contentType := "Content-Type: text/plain" + "; charset=UTF-8" mailmsg := []byte("To: " + strings.Join(s.RecipientAddresses, ";") + "\r\nFrom: " + s.FromAddress + "<" + s.FromAddress + - ">\r\nSubject: " + s.Subject + "\r\n" + contentType + "\r\n\r\n" + fmt.Sprintf(".%s", time.Now().Format("2006-01-02 15:04:05")) + msg) + ">\r\nSubject: " + s.Subject + "\r\n" + contentType + "\r\n\r\n" + fmt.Sprintf(".%s", when.Format("2006-01-02 15:04:05")) + msg) return s.sendMail(s.Host, auth, s.FromAddress, s.RecipientAddresses, mailmsg) } From 4c1cfc13868e7779570dc7b3c6494c428160308d Mon Sep 17 00:00:00 2001 From: coseyo Date: Sun, 24 Jan 2016 00:18:16 +0800 Subject: [PATCH 2/7] fix path issue --- config.go | 11 ++++++++++- parser.go | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/config.go b/config.go index e91ca28b..d090d247 100644 --- a/config.go +++ b/config.go @@ -103,6 +103,8 @@ var ( BConfig *Config // AppConfig is the instance of Config, store the config information from file AppConfig *beegoAppConfig + // AppPath is the absolute path to the app + AppPath string // AppConfigPath is the path to the config files AppConfigPath string // AppConfigProvider is the provider for the config, default is ini @@ -179,9 +181,16 @@ func init() { // ParseConfig parsed default config file. // now only support ini, next will support json. func ParseConfig() (err error) { + AppPath, _ := filepath.Abs(filepath.Dir(os.Args[0])) + workPath, _ := os.Getwd() + workPath, _ = filepath.Abs(workPath) + + if workPath != AppPath { + os.Chdir(AppPath) + } + if AppConfigPath == "" { // initialize default configurations - AppPath, _ := filepath.Abs(filepath.Dir(os.Args[0])) AppConfigPath = filepath.Join(AppPath, "conf", "app.conf") if !utils.FileExists(AppConfigPath) { AppConfig = &beegoAppConfig{config.NewFakeConfig()} diff --git a/parser.go b/parser.go index b14d74b9..f23f4720 100644 --- a/parser.go +++ b/parser.go @@ -130,7 +130,7 @@ func parserComments(comments *ast.CommentGroup, funcName, controllerName, pkgpat } func genRouterCode() { - os.Mkdir("routers", 0755) + os.Mkdir(path.Join(AppPath, "routers"), 0755) Info("generate router from comments") var ( globalinfo string @@ -172,7 +172,7 @@ func genRouterCode() { } } if globalinfo != "" { - f, err := os.Create(path.Join("routers", commentFilename)) + f, err := os.Create(path.Join(AppPath, "routers", commentFilename)) if err != nil { panic(err) } @@ -182,7 +182,7 @@ func genRouterCode() { } func compareFile(pkgRealpath string) bool { - if !utils.FileExists(path.Join("routers", commentFilename)) { + if !utils.FileExists(path.Join(AppPath, "routers", commentFilename)) { return true } if utils.FileExists(lastupdateFilename) { From 3031bdd1762bfb4a04fb36ea764e4c1209a5c9d8 Mon Sep 17 00:00:00 2001 From: coseyo Date: Sun, 24 Jan 2016 00:40:03 +0800 Subject: [PATCH 3/7] fix test error --- config.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/config.go b/config.go index d090d247..ea329596 100644 --- a/config.go +++ b/config.go @@ -185,18 +185,17 @@ func ParseConfig() (err error) { workPath, _ := os.Getwd() workPath, _ = filepath.Abs(workPath) - if workPath != AppPath { - os.Chdir(AppPath) - } - if AppConfigPath == "" { // initialize default configurations AppConfigPath = filepath.Join(AppPath, "conf", "app.conf") - if !utils.FileExists(AppConfigPath) { + if utils.FileExists(AppConfigPath) && workPath != AppPath { + os.Chdir(AppPath) + } else { AppConfig = &beegoAppConfig{config.NewFakeConfig()} return } } + AppConfig, err = newAppConfig(AppConfigProvider, AppConfigPath) if err != nil { return err From 09d3d89c6f0444f92c03a382bc2cdade17363af1 Mon Sep 17 00:00:00 2001 From: coseyo Date: Sun, 24 Jan 2016 00:47:37 +0800 Subject: [PATCH 4/7] fix test error again --- config.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/config.go b/config.go index ea329596..3ceae12e 100644 --- a/config.go +++ b/config.go @@ -188,14 +188,16 @@ func ParseConfig() (err error) { if AppConfigPath == "" { // initialize default configurations AppConfigPath = filepath.Join(AppPath, "conf", "app.conf") - if utils.FileExists(AppConfigPath) && workPath != AppPath { - os.Chdir(AppPath) - } else { + if !utils.FileExists(AppConfigPath) { AppConfig = &beegoAppConfig{config.NewFakeConfig()} return } } + if workPath != AppPath { + os.Chdir(AppPath) + } + AppConfig, err = newAppConfig(AppConfigProvider, AppConfigPath) if err != nil { return err From 0e17e2a3d28b9d68b8ce5e1e41a476e9cb52c09d Mon Sep 17 00:00:00 2001 From: youngsterxyf Date: Mon, 25 Jan 2016 20:20:53 +0800 Subject: [PATCH 5/7] accept @JessonChan suggestion --- logs/log.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/logs/log.go b/logs/log.go index 0c4ac13a..076a9766 100644 --- a/logs/log.go +++ b/logs/log.go @@ -184,7 +184,8 @@ func (bl *BeeLogger) writeToLoggers(when time.Time, msg string, level int) { } } -func (bl *BeeLogger) writeMsg(logLevel int, msg string, when time.Time) error { +func (bl *BeeLogger) writeMsg(logLevel int, msg string) error { + when := time.Now() if bl.enableFuncCallDepth { _, file, line, ok := runtime.Caller(bl.loggerFuncCallDepth) if !ok { @@ -246,7 +247,7 @@ func (bl *BeeLogger) Emergency(format string, v ...interface{}) { return } msg := fmt.Sprintf("[M] "+format, v...) - bl.writeMsg(LevelEmergency, msg, time.Now()) + bl.writeMsg(LevelEmergency, msg) } // Alert Log ALERT level message. @@ -255,7 +256,7 @@ func (bl *BeeLogger) Alert(format string, v ...interface{}) { return } msg := fmt.Sprintf("[A] "+format, v...) - bl.writeMsg(LevelAlert, msg, time.Now()) + bl.writeMsg(LevelAlert, msg) } // Critical Log CRITICAL level message. @@ -264,7 +265,7 @@ func (bl *BeeLogger) Critical(format string, v ...interface{}) { return } msg := fmt.Sprintf("[C] "+format, v...) - bl.writeMsg(LevelCritical, msg, time.Now()) + bl.writeMsg(LevelCritical, msg) } // Error Log ERROR level message. @@ -273,7 +274,7 @@ func (bl *BeeLogger) Error(format string, v ...interface{}) { return } msg := fmt.Sprintf("[E] "+format, v...) - bl.writeMsg(LevelError, msg, time.Now()) + bl.writeMsg(LevelError, msg) } // Warning Log WARNING level message. @@ -282,7 +283,7 @@ func (bl *BeeLogger) Warning(format string, v ...interface{}) { return } msg := fmt.Sprintf("[W] "+format, v...) - bl.writeMsg(LevelWarning, msg, time.Now()) + bl.writeMsg(LevelWarning, msg) } // Notice Log NOTICE level message. @@ -291,7 +292,7 @@ func (bl *BeeLogger) Notice(format string, v ...interface{}) { return } msg := fmt.Sprintf("[N] "+format, v...) - bl.writeMsg(LevelNotice, msg, time.Now()) + bl.writeMsg(LevelNotice, msg) } // Informational Log INFORMATIONAL level message. @@ -300,7 +301,7 @@ func (bl *BeeLogger) Informational(format string, v ...interface{}) { return } msg := fmt.Sprintf("[I] "+format, v...) - bl.writeMsg(LevelInformational, msg, time.Now()) + bl.writeMsg(LevelInformational, msg) } // Debug Log DEBUG level message. @@ -309,7 +310,7 @@ func (bl *BeeLogger) Debug(format string, v ...interface{}) { return } msg := fmt.Sprintf("[D] "+format, v...) - bl.writeMsg(LevelDebug, msg, time.Now()) + bl.writeMsg(LevelDebug, msg) } // Warn Log WARN level message. @@ -319,7 +320,7 @@ func (bl *BeeLogger) Warn(format string, v ...interface{}) { return } msg := fmt.Sprintf("[W] "+format, v...) - bl.writeMsg(LevelWarning, msg, time.Now()) + bl.writeMsg(LevelWarning, msg) } // Info Log INFO level message. @@ -329,7 +330,7 @@ func (bl *BeeLogger) Info(format string, v ...interface{}) { return } msg := fmt.Sprintf("[I] "+format, v...) - bl.writeMsg(LevelInformational, msg, time.Now()) + bl.writeMsg(LevelInformational, msg) } // Trace Log TRACE level message. @@ -339,7 +340,7 @@ func (bl *BeeLogger) Trace(format string, v ...interface{}) { return } msg := fmt.Sprintf("[D] "+format, v...) - bl.writeMsg(LevelDebug, msg, time.Now()) + bl.writeMsg(LevelDebug, msg) } // Flush flush all chan data. From bcac4bb8e3631e77fe1a0e0d6fd312a4f3c1b099 Mon Sep 17 00:00:00 2001 From: youngsterxyf Date: Mon, 25 Jan 2016 20:53:25 +0800 Subject: [PATCH 6/7] accept @JessonChan suggestion --- logs/conn.go | 3 +-- logs/console.go | 5 +---- logs/file.go | 3 +-- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/logs/conn.go b/logs/conn.go index 2a29688a..5d78467b 100644 --- a/logs/conn.go +++ b/logs/conn.go @@ -64,8 +64,7 @@ func (c *connWriter) WriteMsg(when time.Time, msg string, level int) error { defer c.innerWriter.Close() } - logTimeStr := formatLogTime(when) - msg = logTimeStr + msg + msg = formatLogTime(when) + msg c.lg.Println(msg) return nil diff --git a/logs/console.go b/logs/console.go index 48d1e5b2..e6da0df9 100644 --- a/logs/console.go +++ b/logs/console.go @@ -74,10 +74,7 @@ func (c *consoleWriter) WriteMsg(when time.Time, msg string, level int) error { if level > c.Level { return nil } - - logTimeStr := formatLogTime(when) - msg = logTimeStr + msg - + msg = formatLogTime(when) + msg if goos := runtime.GOOS; goos == "windows" { c.lg.Println(msg) return nil diff --git a/logs/file.go b/logs/file.go index 16bf29c2..f277317c 100644 --- a/logs/file.go +++ b/logs/file.go @@ -121,8 +121,7 @@ func (w *fileLogWriter) WriteMsg(when time.Time, msg string, level int) error { //2016/01/12 21:34:33 // now := time.Now() d := when.Day() - logTimeStr := formatLogTime(when) - msg = logTimeStr + msg + "\n" + msg = formatLogTime(when) + msg + "\n" if w.Rotate { if w.needRotate(len(msg), d) { From d1481ea659253f6f66bae053fd358f66c68f384c Mon Sep 17 00:00:00 2001 From: coseyo Date: Mon, 25 Jan 2016 23:00:09 +0800 Subject: [PATCH 7/7] move assignment to init --- config.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/config.go b/config.go index 3ceae12e..bf9077a7 100644 --- a/config.go +++ b/config.go @@ -113,9 +113,15 @@ var ( TemplateCache map[string]*template.Template // GlobalSessions is the instance for the session manager GlobalSessions *session.Manager + + workPath string ) func init() { + AppPath, _ = filepath.Abs(filepath.Dir(os.Args[0])) + workPath, _ = os.Getwd() + workPath, _ = filepath.Abs(workPath) + BConfig = &Config{ AppName: "beego", RunMode: DEV, @@ -181,10 +187,6 @@ func init() { // ParseConfig parsed default config file. // now only support ini, next will support json. func ParseConfig() (err error) { - AppPath, _ := filepath.Abs(filepath.Dir(os.Args[0])) - workPath, _ := os.Getwd() - workPath, _ = filepath.Abs(workPath) - if AppConfigPath == "" { // initialize default configurations AppConfigPath = filepath.Join(AppPath, "conf", "app.conf")