From 730420b6b32414db7fcd12ede87712b0f960de7b Mon Sep 17 00:00:00 2001
From: wxiaoguang <wxiaoguang@gmail.com>
Date: Wed, 4 May 2022 00:03:34 +0800
Subject: [PATCH] Only set CanColorStdout / CanColorStderr to true if the
 stdout/stderr is a terminal (#19581)

---
 modules/log/console_other.go | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 modules/log/console_other.go

diff --git a/modules/log/console_other.go b/modules/log/console_other.go
new file mode 100644
index 000000000..b5cac55b5
--- /dev/null
+++ b/modules/log/console_other.go
@@ -0,0 +1,21 @@
+// Copyright 2022 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+//go:build !windows
+
+package log
+
+import (
+	"os"
+
+	"github.com/mattn/go-isatty"
+)
+
+func init() {
+	// when running gitea as a systemd unit with logging set to console, the output can not be colorized,
+	// otherwise it spams the journal / syslog with escape sequences like "#033[0m#033[32mcmd/web.go:102:#033[32m"
+	// this file covers non-windows platforms.
+	CanColorStdout = isatty.IsTerminal(os.Stdout.Fd())
+	CanColorStderr = isatty.IsTerminal(os.Stderr.Fd())
+}