From 8c2c7b802fa0d0da660834bcf2ae60887c0bfd4f Mon Sep 17 00:00:00 2001
From: willemvd <willemvd@users.noreply.github.com>
Date: Tue, 17 Jan 2017 07:02:35 +0100
Subject: [PATCH] Remove the default console logger when it is not set in the
 configuration (#602)

* Remove the default console logger when it is not set in the configuration

* Added comment to new function (lint failure)

* update based on PR comments (code style)

* code style fix (thanks bkcsoft)

* check if logger exists based on the l.outputs (like in l.DelLogger) instead of adapter, otherwise panic when reinstalling gitea (since the output adapter still exist, without outputs)
---
 modules/log/log.go         | 11 +++++++++++
 modules/setting/setting.go | 10 ++++++++++
 2 files changed, 21 insertions(+)

diff --git a/modules/log/log.go b/modules/log/log.go
index 6ca6d3f7c..8faf9416d 100644
--- a/modules/log/log.go
+++ b/modules/log/log.go
@@ -39,6 +39,17 @@ func NewLogger(bufLen int64, mode, config string) {
 	}
 }
 
+// DelLogger removes loggers that are for the given mode
+func DelLogger(mode string) error {
+	for _, l := range loggers {
+		if _, ok := l.outputs[mode]; ok {
+			return l.DelLogger(mode)
+		}
+	}
+	Trace("Log adapter %s not found, no need to delete", mode)
+	return nil
+}
+
 // NewGitLogger create a logger for git
 // FIXME: use same log level as other loggers.
 func NewGitLogger(logPath string) {
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index ab916c1b5..16177e889 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -895,6 +895,16 @@ func newLogService() {
 	LogModes = strings.Split(Cfg.Section("log").Key("MODE").MustString("console"), ",")
 	LogConfigs = make([]string, len(LogModes))
 
+	useConsole := false
+	for _, mode := range LogModes {
+		if mode == "console"  {
+			useConsole = true
+		}
+	}
+	if (!useConsole) {
+		log.DelLogger("console")
+	}
+
 	for i, mode := range LogModes {
 		mode = strings.TrimSpace(mode)