diff --git a/cmd/admin-handlers.go b/cmd/admin-handlers.go index e3e00f81f..b87cf1640 100644 --- a/cmd/admin-handlers.go +++ b/cmd/admin-handlers.go @@ -42,6 +42,7 @@ import ( "github.com/minio/minio/cmd/crypto" xhttp "github.com/minio/minio/cmd/http" "github.com/minio/minio/cmd/logger" + "github.com/minio/minio/cmd/logger/message/log" "github.com/minio/minio/pkg/auth" "github.com/minio/minio/pkg/cpu" "github.com/minio/minio/pkg/event/target" @@ -1227,8 +1228,8 @@ func (a adminAPIHandlers) ConsoleLogHandler(w http.ResponseWriter, r *http.Reque for { select { case entry := <-logCh: - log := entry.(madmin.LogInfo) - if log.SendLog(node, logKind) { + log, ok := entry.(log.Info) + if ok && log.SendLog(node, logKind) { if err := enc.Encode(log); err != nil { return } diff --git a/cmd/consolelogger.go b/cmd/consolelogger.go index 1a21fd709..b6ebda107 100644 --- a/cmd/consolelogger.go +++ b/cmd/consolelogger.go @@ -24,7 +24,6 @@ import ( "github.com/minio/minio/cmd/logger" "github.com/minio/minio/cmd/logger/message/log" "github.com/minio/minio/cmd/logger/target/console" - "github.com/minio/minio/pkg/madmin" xnet "github.com/minio/minio/pkg/net" "github.com/minio/minio/pkg/pubsub" ) @@ -84,17 +83,20 @@ func (sys *HTTPConsoleLoggerSys) Subscribe(subCh chan interface{}, doneCh chan s cnt := 0 // by default send all console logs in the ring buffer unless node or limit query parameters // are set. - var lastN []madmin.LogInfo + var lastN []log.Info if last > defaultLogBufferCount || last <= 0 { last = defaultLogBufferCount } - lastN = make([]madmin.LogInfo, last) + lastN = make([]log.Info, last) sys.RLock() sys.logBuf.Do(func(p interface{}) { - if p != nil && (p.(madmin.LogInfo)).SendLog(node, logKind) { - lastN[cnt%last] = p.(madmin.LogInfo) - cnt++ + if p != nil { + lg, ok := p.(log.Info) + if ok && lg.SendLog(node, logKind) { + lastN[cnt%last] = lg + cnt++ + } } }) sys.RUnlock() @@ -102,7 +104,7 @@ func (sys *HTTPConsoleLoggerSys) Subscribe(subCh chan interface{}, doneCh chan s if cnt > 0 { for i := 0; i < last; i++ { entry := lastN[(cnt+i)%last] - if (entry == madmin.LogInfo{}) { + if (entry == log.Info{}) { continue } select { diff --git a/cmd/logger/message/log/entry.go b/cmd/logger/message/log/entry.go index 1309f041a..bc5140338 100644 --- a/cmd/logger/message/log/entry.go +++ b/cmd/logger/message/log/entry.go @@ -1,5 +1,5 @@ /* - * MinIO Cloud Storage, (C) 2018 MinIO, Inc. + * MinIO Cloud Storage, (C) 2018, 2020 MinIO, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,8 @@ package log +import "strings" + // Args - defines the arguments for the API. type Args struct { Bucket string `json:"bucket,omitempty"` @@ -58,3 +60,10 @@ type Info struct { NodeName string `json:"node"` Err error `json:"-"` } + +// SendLog returns true if log pertains to node specified in args. +func (l Info) SendLog(node, logKind string) bool { + nodeFltr := (node == "" || strings.EqualFold(node, l.NodeName)) + typeFltr := strings.EqualFold(logKind, "all") || strings.EqualFold(l.LogKind, logKind) + return nodeFltr && typeFltr +} diff --git a/pkg/madmin/api-log.go b/pkg/madmin/api-log.go index 7c1facbf0..0d1448b5d 100644 --- a/pkg/madmin/api-log.go +++ b/pkg/madmin/api-log.go @@ -22,7 +22,6 @@ import ( "net/http" "net/url" "strconv" - "strings" ) // LogInfo holds console log messages @@ -33,13 +32,6 @@ type LogInfo struct { Err error `json:"-"` } -// SendLog returns true if log pertains to node specified in args. -func (l LogInfo) SendLog(node, logKind string) bool { - nodeFltr := (node == "" || strings.EqualFold(node, l.NodeName)) - typeFltr := strings.EqualFold(logKind, "all") || strings.EqualFold(l.LogKind, logKind) - return nodeFltr && typeFltr -} - // GetLogs - listen on console log messages. func (adm AdminClient) GetLogs(ctx context.Context, node string, lineCnt int, logKind string) <-chan LogInfo { logCh := make(chan LogInfo, 1)