aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-06-28 14:02:06 +0800
committerGitHub <noreply@github.com>2023-06-28 08:02:06 +0200
commit65d3e1161b0544f50d94dbbecb6bcf135535e112 (patch)
tree2f1a9a0630e37c9db17b842122b425b46b501867 /modules
parentb943318617633e7dc43f3ac1c146be1e37563093 (diff)
downloadgitea-65d3e1161b0544f50d94dbbecb6bcf135535e112.tar.gz
gitea-65d3e1161b0544f50d94dbbecb6bcf135535e112.zip
Fix sub-command log level (#25537)
More fix for #24981 * #24981 Close #22361 * #22361 There were many patches for Gitea's sub-commands to satisfy the facts: * Some sub-commands shouldn't output any log, otherwise the git protocol would be broken * Sometimes the users want to see "verbose" or "quiet" outputs That's a longstanding problem, and very fragile. This PR is only a quick patch for the problem. In the future, the sub-command system should be refactored to a clear solution. ---- Other changes: * Use `ReplaceAllWriters` to replace `RemoveAllWriters().AddWriters(writer)`, then it's an atomic operation. * Remove unnecessary `syncLevelInternal` calls, because `AddWriters/addWritersInternal` already calls it. Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'modules')
-rw-r--r--modules/log/logger_global.go2
-rw-r--r--modules/log/logger_impl.go13
-rw-r--r--modules/log/manager_test.go2
-rw-r--r--modules/setting/log.go2
4 files changed, 10 insertions, 9 deletions
diff --git a/modules/log/logger_global.go b/modules/log/logger_global.go
index 5ccef34b5b..994acfedbb 100644
--- a/modules/log/logger_global.go
+++ b/modules/log/logger_global.go
@@ -79,5 +79,5 @@ func SetConsoleLogger(loggerName, writerName string, level Level) {
Colorize: CanColorStdout,
WriterOption: WriterConsoleOption{},
})
- GetManager().GetLogger(loggerName).RemoveAllWriters().AddWriters(writer)
+ GetManager().GetLogger(loggerName).ReplaceAllWriters(writer)
}
diff --git a/modules/log/logger_impl.go b/modules/log/logger_impl.go
index 903d8cefc2..d38c6516ed 100644
--- a/modules/log/logger_impl.go
+++ b/modules/log/logger_impl.go
@@ -96,7 +96,10 @@ func (l *LoggerImpl) removeWriterInternal(w EventWriter) {
func (l *LoggerImpl) AddWriters(writer ...EventWriter) {
l.eventWriterMu.Lock()
defer l.eventWriterMu.Unlock()
+ l.addWritersInternal(writer...)
+}
+func (l *LoggerImpl) addWritersInternal(writer ...EventWriter) {
for _, w := range writer {
if old, ok := l.eventWriters[w.GetWriterName()]; ok {
l.removeWriterInternal(old)
@@ -126,8 +129,8 @@ func (l *LoggerImpl) RemoveWriter(modeName string) error {
return nil
}
-// RemoveAllWriters removes all writers from the logger, non-shared writers are closed and flushed
-func (l *LoggerImpl) RemoveAllWriters() *LoggerImpl {
+// ReplaceAllWriters replaces all writers from the logger, non-shared writers are closed and flushed
+func (l *LoggerImpl) ReplaceAllWriters(writer ...EventWriter) {
l.eventWriterMu.Lock()
defer l.eventWriterMu.Unlock()
@@ -135,8 +138,7 @@ func (l *LoggerImpl) RemoveAllWriters() *LoggerImpl {
l.removeWriterInternal(w)
}
l.eventWriters = map[string]EventWriter{}
- l.syncLevelInternal()
- return l
+ l.addWritersInternal(writer...)
}
// DumpWriters dumps the writers as a JSON map, it's used for debugging and display purposes.
@@ -161,7 +163,7 @@ func (l *LoggerImpl) DumpWriters() map[string]any {
// Close closes the logger, non-shared writers are closed and flushed
func (l *LoggerImpl) Close() {
- l.RemoveAllWriters()
+ l.ReplaceAllWriters()
l.ctxCancel()
}
@@ -233,7 +235,6 @@ func NewLoggerWithWriters(ctx context.Context, name string, writer ...EventWrite
l.ctx, l.ctxCancel = newProcessTypedContext(ctx, "Logger: "+name)
l.LevelLogger = BaseLoggerToGeneralLogger(l)
l.eventWriters = map[string]EventWriter{}
- l.syncLevelInternal()
l.AddWriters(writer...)
return l
}
diff --git a/modules/log/manager_test.go b/modules/log/manager_test.go
index aa01f79980..b8fbf84613 100644
--- a/modules/log/manager_test.go
+++ b/modules/log/manager_test.go
@@ -23,7 +23,7 @@ func TestSharedWorker(t *testing.T) {
loggerTest := m.GetLogger("test")
loggerTest.AddWriters(w)
loggerTest.Info("msg-1")
- loggerTest.RemoveAllWriters() // the shared writer is not closed here
+ loggerTest.ReplaceAllWriters() // the shared writer is not closed here
loggerTest.Info("never seen")
// the shared writer can still be used later
diff --git a/modules/setting/log.go b/modules/setting/log.go
index af64ea8d85..66206f8f4b 100644
--- a/modules/setting/log.go
+++ b/modules/setting/log.go
@@ -244,7 +244,7 @@ func initLoggerByName(manager *log.LoggerManager, rootCfg ConfigProvider, logger
eventWriters = append(eventWriters, eventWriter)
}
- manager.GetLogger(loggerName).RemoveAllWriters().AddWriters(eventWriters...)
+ manager.GetLogger(loggerName).ReplaceAllWriters(eventWriters...)
}
func InitSQLLoggersForCli(level log.Level) {