fix(jobservice):wrong depth of job logging

- use separate std logger for job, not shared with jobservice std logger
- merge and remove useless functions

Signed-off-by: Steven Zou <szou@vmware.com>

fix #14079
This commit is contained in:
Steven Zou 2021-02-07 18:07:02 +08:00
parent 9cd33ac5e7
commit d61e560890
3 changed files with 18 additions and 23 deletions

View File

@ -45,11 +45,11 @@ func GetLogger(loggerOptions ...Option) (Interface, error) {
// Create backends
loggers := make([]Interface, 0)
for name, ops := range lOptions.values {
if !IsKnownLogger(name) {
d, o := IsKnownLogger(name)
if !o {
return nil, fmt.Errorf("no logger registered for name '%s'", name)
}
d := KnownLoggers(name)
var (
l Interface
ok bool
@ -111,7 +111,7 @@ func GetSweeper(context context.Context, sweeperOptions ...Option) (sweeper.Inte
return nil, fmt.Errorf("no sweeper provided for the logger %s", name)
}
d := KnownLoggers(name)
d, _ := IsKnownLogger(name)
s, err := d.Sweeper(ops...)
if err != nil {
return nil, err
@ -199,7 +199,10 @@ func Init(ctx context.Context) error {
if err != nil {
return err
}
// Avoid data race issue
// Do not cache this system std logger with name `NameStdOutput` as caching causes conflict with job std logger.
singletons.Delete(NameStdOutput)
singletons.Store(systemKeyServiceLogger, lg)
jOptions := make([]Option, 0)

View File

@ -1,9 +1,10 @@
package logger
import (
"github.com/goharbor/harbor/src/jobservice/logger/backend"
"reflect"
"strings"
"github.com/goharbor/harbor/src/jobservice/logger/backend"
)
const (
@ -39,10 +40,10 @@ var knownLoggers = map[string]*Declaration{
}
// IsKnownLogger checks if the logger is supported with name.
func IsKnownLogger(name string) bool {
_, ok := knownLoggers[name]
func IsKnownLogger(name string) (*Declaration, bool) {
d, ok := knownLoggers[name]
return ok
return d, ok
}
// HasSweeper checks if the logger with the name provides a sweeper.
@ -59,11 +60,6 @@ func HasGetter(name string) bool {
return ok && d.Getter != nil
}
// KnownLoggers return the declaration by the name
func KnownLoggers(name string) *Declaration {
return knownLoggers[name]
}
// All known levels which are supported.
var debugLevels = []string{
"DEBUG",

View File

@ -1,20 +1,23 @@
package logger
import (
"github.com/goharbor/harbor/src/jobservice/logger/backend"
"github.com/stretchr/testify/require"
"os"
"path"
"testing"
"github.com/goharbor/harbor/src/jobservice/logger/backend"
"github.com/stretchr/testify/require"
)
// TestKnownLoggers
func TestKnownLoggers(t *testing.T) {
b := IsKnownLogger("Unknown")
l, b := IsKnownLogger("Unknown")
require.False(t, b)
require.Nil(t, l)
b = IsKnownLogger(NameFile)
l, b = IsKnownLogger(NameFile)
require.True(t, b)
require.NotNil(t, l)
// no getter
b = HasGetter(NameStdOutput)
@ -30,13 +33,6 @@ func TestKnownLoggers(t *testing.T) {
b = HasSweeper(NameDB)
require.True(t, b)
// unknown logger
l := KnownLoggers("unknown")
require.Nil(t, l)
// known logger
l = KnownLoggers(NameDB)
require.NotNil(t, l)
// unknown level
b = IsKnownLevel("unknown")
require.False(t, b)