aboutsummaryrefslogtreecommitdiff
path: root/internal/conf
diff options
context:
space:
mode:
authorᴜɴᴋɴᴡᴏɴ <u@gogs.io>2020-03-02 22:25:28 +0800
committerGitHub <noreply@github.com>2020-03-02 22:25:28 +0800
commit931da04dc2c7bdc078ded191b4d44d1e1f0d161b (patch)
tree568728ee2da23fcabfbf679fc76703a67626419e /internal/conf
parent7efa946b02e14a88e612ddcbfa7ee42a16df55b9 (diff)
cmd/serv: improve hookMode handling (#5960)
- Allow remove primary logger at better location - Use more appropriate log.Error to replace log.Fatal
Diffstat (limited to 'internal/conf')
-rw-r--r--internal/conf/log.go15
1 files changed, 10 insertions, 5 deletions
diff --git a/internal/conf/log.go b/internal/conf/log.go
index 58e17f87..e6865a41 100644
--- a/internal/conf/log.go
+++ b/internal/conf/log.go
@@ -126,17 +126,15 @@ func initLogConf(cfg *ini.File, hookMode bool) (_ *logConf, hasConsole bool, _ e
}
// InitLogging initializes the logging service of the application. When the
-// argument "hookMode" is true, it only initializes the root path for log files
-// without creating any logger.
+// "hookMode" is true, it only initializes the root path for log files without
+// creating any logger. It will also not remove the primary logger in "hookMode"
+// and is up to the caller to decide when to remove it.
func InitLogging(hookMode bool) {
logConf, hasConsole, err := initLogConf(File, hookMode)
if err != nil {
log.Fatal("Failed to init logging configuration: %v", err)
}
defer func() {
- if !hasConsole {
- log.Remove(log.DefaultConsoleName)
- }
Log = logConf
}()
@@ -177,4 +175,11 @@ func InitLogging(hookMode bool) {
}
log.Trace("Log mode: %s (%s)", strings.Title(mode), strings.Title(strings.ToLower(level.String())))
}
+
+ // ⚠️ WARNING: It is only safe to remove the primary logger until
+ // there are other loggers that are initialized. Otherwise, the
+ // application will print errors to nowhere.
+ if !hasConsole {
+ log.Remove(log.DefaultConsoleName)
+ }
}