From 0970d6cc38a79c57ffe8e3c85687f7c7c49059be Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 11 May 2014 14:37:12 -0400 Subject: Log to different adapter according to level --- modules/base/conf.go | 103 +++++++++++++++++++++++++++------------------------ 1 file changed, 54 insertions(+), 49 deletions(-) (limited to 'modules/base') diff --git a/modules/base/conf.go b/modules/base/conf.go index 99bac900..c38d3357 100644 --- a/modules/base/conf.go +++ b/modules/base/conf.go @@ -70,8 +70,8 @@ var ( MailService *Mailer OauthService *Oauther - LogMode string - LogConfig string + LogModes []string + LogConfigs []string Cache cache.Cache CacheAdapter string @@ -130,57 +130,62 @@ func newService() { } func newLogService() { + log.Info("%s %s", AppName, AppVer) + // Get and check log mode. - LogMode = Cfg.MustValue("log", "MODE", "console") - modeSec := "log." + LogMode - if _, err := Cfg.GetSection(modeSec); err != nil { - qlog.Fatalf("Unknown log mode: %s\n", LogMode) - } + LogModes = strings.Split(Cfg.MustValue("log", "MODE", "console"), ",") + LogConfigs = make([]string, len(LogModes)) + for i, mode := range LogModes { + mode = strings.TrimSpace(mode) + modeSec := "log." + mode + if _, err := Cfg.GetSection(modeSec); err != nil { + qlog.Fatalf("Unknown log mode: %s\n", mode) + } - // Log level. - levelName := Cfg.MustValue("log."+LogMode, "LEVEL", "Trace") - level, ok := logLevels[levelName] - if !ok { - qlog.Fatalf("Unknown log level: %s\n", levelName) - } + // Log level. + levelName := Cfg.MustValue("log."+mode, "LEVEL", "Trace") + level, ok := logLevels[levelName] + if !ok { + qlog.Fatalf("Unknown log level: %s\n", levelName) + } - // Generate log configuration. - switch LogMode { - case "console": - LogConfig = fmt.Sprintf(`{"level":%s}`, level) - case "file": - logPath := Cfg.MustValue(modeSec, "FILE_NAME", "log/gogs.log") - os.MkdirAll(path.Dir(logPath), os.ModePerm) - LogConfig = fmt.Sprintf( - `{"level":%s,"filename":"%s","rotate":%v,"maxlines":%d,"maxsize":%d,"daily":%v,"maxdays":%d}`, level, - logPath, - Cfg.MustBool(modeSec, "LOG_ROTATE", true), - Cfg.MustInt(modeSec, "MAX_LINES", 1000000), - 1<