|
@@ -626,9 +626,16 @@ func newLogService() {
|
|
|
// thus if user doesn't set console logger, we should remove it after other loggers are created.
|
|
|
hasConsole := false
|
|
|
|
|
|
- // Get and check log mode.
|
|
|
+ // Get and check log modes.
|
|
|
LogModes = strings.Split(Cfg.Section("log").Key("MODE").MustString("console"), ",")
|
|
|
LogConfigs = make([]interface{}, len(LogModes))
|
|
|
+ levelNames := map[string]log.LEVEL{
|
|
|
+ "trace": log.TRACE,
|
|
|
+ "info": log.INFO,
|
|
|
+ "warn": log.WARN,
|
|
|
+ "error": log.ERROR,
|
|
|
+ "fatal": log.FATAL,
|
|
|
+ }
|
|
|
for i, mode := range LogModes {
|
|
|
mode = strings.ToLower(strings.TrimSpace(mode))
|
|
|
sec, err := Cfg.GetSection("log." + mode)
|
|
@@ -637,30 +644,25 @@ func newLogService() {
|
|
|
}
|
|
|
|
|
|
validLevels := []string{"trace", "info", "warn", "error", "fatal"}
|
|
|
- levelName := Cfg.Section("log." + mode).Key("LEVEL").Validate(func(v string) string {
|
|
|
+ name := Cfg.Section("log." + mode).Key("LEVEL").Validate(func(v string) string {
|
|
|
v = strings.ToLower(v)
|
|
|
if com.IsSliceContainsStr(validLevels, v) {
|
|
|
return v
|
|
|
}
|
|
|
return "trace"
|
|
|
})
|
|
|
- level := map[string]log.LEVEL{
|
|
|
- "trace": log.TRACE,
|
|
|
- "info": log.INFO,
|
|
|
- "warn": log.WARN,
|
|
|
- "error": log.ERROR,
|
|
|
- "fatal": log.FATAL,
|
|
|
- }[levelName]
|
|
|
+ level := levelNames[name]
|
|
|
|
|
|
// Generate log configuration.
|
|
|
- switch mode {
|
|
|
- case "console":
|
|
|
+ switch log.MODE(mode) {
|
|
|
+ case log.CONSOLE:
|
|
|
hasConsole = true
|
|
|
LogConfigs[i] = log.ConsoleConfig{
|
|
|
Level: level,
|
|
|
BufferSize: Cfg.Section("log").Key("BUFFER_LEN").MustInt64(100),
|
|
|
}
|
|
|
- case "file":
|
|
|
+
|
|
|
+ case log.FILE:
|
|
|
logPath := path.Join(LogRootPath, "gogs.log")
|
|
|
if err = os.MkdirAll(path.Dir(logPath), os.ModePerm); err != nil {
|
|
|
log.Fatal(4, "Fail to create log directory '%s': %v", path.Dir(logPath), err)
|
|
@@ -678,10 +680,17 @@ func newLogService() {
|
|
|
MaxDays: sec.Key("MAX_DAYS").MustInt64(7),
|
|
|
},
|
|
|
}
|
|
|
+
|
|
|
+ case log.SLACK:
|
|
|
+ LogConfigs[i] = log.SlackConfig{
|
|
|
+ Level: level,
|
|
|
+ BufferSize: Cfg.Section("log").Key("BUFFER_LEN").MustInt64(100),
|
|
|
+ URL: sec.Key("URL").String(),
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
log.New(log.MODE(mode), LogConfigs[i])
|
|
|
- log.Trace("Log Mode: %s (%s)", strings.Title(mode), strings.Title(levelName))
|
|
|
+ log.Trace("Log Mode: %s (%s)", strings.Title(mode), strings.Title(name))
|
|
|
}
|
|
|
|
|
|
// Make sure everyone gets version info printed.
|