diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-03-02 22:25:28 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-02 22:25:28 +0800 |
commit | 931da04dc2c7bdc078ded191b4d44d1e1f0d161b (patch) | |
tree | 568728ee2da23fcabfbf679fc76703a67626419e /internal/conf | |
parent | 7efa946b02e14a88e612ddcbfa7ee42a16df55b9 (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.go | 15 |
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) + } } |