From 460aa3eaa96df483981e74a6992878941f11bf00 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 19 Mar 2014 03:24:17 -0400 Subject: optimize log --- modules/base/conf.go | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'modules/base') diff --git a/modules/base/conf.go b/modules/base/conf.go index 83c7f887..1aafd5b4 100644 --- a/modules/base/conf.go +++ b/modules/base/conf.go @@ -44,6 +44,23 @@ func exeDir() (string, error) { return path.Dir(p), nil } +func newLogService() { + log.NewLogger() +} + +func newMailService() { + // Check mailer setting. + if Cfg.MustBool("mailer", "ENABLED") { + MailService = &Mailer{ + Name: Cfg.MustValue("mailer", "NAME", AppName), + Host: Cfg.MustValue("mailer", "HOST", "127.0.0.1:25"), + User: Cfg.MustValue("mailer", "USER", "example@example.com"), + Passwd: Cfg.MustValue("mailer", "PASSWD", "******"), + } + log.Info("Mail Service Enabled") + } +} + func init() { var err error workDir, err := exeDir() @@ -72,14 +89,7 @@ func init() { AppName = Cfg.MustValue("", "APP_NAME", "Gogs: Go Git Service") Domain = Cfg.MustValue("server", "DOMAIN") - // Check mailer setting. - if Cfg.MustBool("mailer", "ENABLED") { - MailService = &Mailer{ - Name: Cfg.MustValue("mailer", "NAME", AppName), - Host: Cfg.MustValue("mailer", "HOST", "127.0.0.1:25"), - User: Cfg.MustValue("mailer", "USER", "example@example.com"), - Passwd: Cfg.MustValue("mailer", "PASSWD", "******"), - } - log.Info("Mail Service Enabled") - } + // Extensions. + newLogService() + newMailService() } -- cgit v1.2.3 From cef9bbd5305d42cdb4e1b807ec0fb55fcff09067 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 19 Mar 2014 04:08:25 -0400 Subject: Add complete log configuration --- conf/app.ini | 12 ++++++------ gogs.go | 2 +- modules/base/conf.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++- modules/log/log.go | 6 +++--- 4 files changed, 64 insertions(+), 11 deletions(-) (limited to 'modules/base') diff --git a/conf/app.ini b/conf/app.ini index e42fc244..debfcf93 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -47,20 +47,20 @@ BUFFER_LEN = 10000 ; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" LEVEL = Trace -; For "console" mode only, all log files will be stored in "/log" directory +; For "console" mode only [log.console] LEVEL = ; For "file" mode only [log.file] LEVEL = -FILE_NAME = "gogs.log" +FILE_NAME = log/gogs.log ; This enables automated log rotate(switch of following options), default is true -LOG_ROTATE = +LOG_ROTATE = true ; Max line number of single file, default is 1000000 MAX_LINES = 1000000 -; Max size of single file, default is 1 << 28, 256MB -MAX_SIZE = 1 << 28 +; Max size shift of single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 ; Segment log daily, default is true DAILY_ROTATE = true ; Expired days of log file(delete after max days), default is 7 @@ -88,5 +88,5 @@ HOST = ; Mailer user name and password USER = PASSWD = -; Receivers, can be one or more +; Receivers, can be one or more, e.g. ["1@example.com","2@example.com"] RECEIVERS = \ No newline at end of file diff --git a/gogs.go b/gogs.go index 2757fbc1..106e8b1d 100644 --- a/gogs.go +++ b/gogs.go @@ -20,7 +20,7 @@ import ( // Test that go1.1 tag above is included in builds. main.go refers to this definition. const go11tag = true -const APP_VER = "0.1.0.0318.1" +const APP_VER = "0.1.0.0319.1" func init() { base.AppVer = APP_VER diff --git a/modules/base/conf.go b/modules/base/conf.go index 1aafd5b4..6610bce1 100644 --- a/modules/base/conf.go +++ b/modules/base/conf.go @@ -44,8 +44,61 @@ func exeDir() (string, error) { return path.Dir(p), nil } +var logLevels = map[string]string{ + "Trace": "0", + "Debug": "1", + "Info": "2", + "Warn": "3", + "Error": "4", + "Critical": "5", +} + func newLogService() { - log.NewLogger() + // Get and check log mode. + mode := Cfg.MustValue("log", "MODE", "console") + modeSec := "log." + mode + if _, err := Cfg.GetSection(modeSec); err != nil { + fmt.Printf("Unknown log mode: %s\n", mode) + os.Exit(2) + } + + // Log level. + level, ok := logLevels[Cfg.MustValue("log."+mode, "LEVEL", "Trace")] + if !ok { + fmt.Printf("Unknown log level: %s\n", Cfg.MustValue("log."+mode, "LEVEL", "Trace")) + os.Exit(2) + } + + // Generate log configuration. + var config string + switch mode { + case "console": + config = fmt.Sprintf(`{"level":%s}`, level) + case "file": + config = fmt.Sprintf( + `{"level":%s,"filename":%s,"rotate":%v,"maxlines":%d,"maxsize",%d,"daily":%v,"maxdays":%d}`, level, + Cfg.MustValue(modeSec, "FILE_NAME", "log/gogs.log"), + Cfg.MustBool(modeSec, "LOG_ROTATE", true), + Cfg.MustInt(modeSec, "MAX_LINES", 1000000), + 1<