mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #92347 from rahulchheda/logging
Removed mutex thread locking and unlocking from logging Format registry
This commit is contained in:
commit
66761346af
@ -63,13 +63,15 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
|
|||||||
unsupportedFlags := fmt.Sprintf("--%s", strings.Join(unsupportedLoggingFlags(), ", --"))
|
unsupportedFlags := fmt.Sprintf("--%s", strings.Join(unsupportedLoggingFlags(), ", --"))
|
||||||
formats := fmt.Sprintf(`"%s"`, strings.Join(logRegistry.List(), `", "`))
|
formats := fmt.Sprintf(`"%s"`, strings.Join(logRegistry.List(), `", "`))
|
||||||
fs.StringVar(&o.LogFormat, logFormatFlagName, defaultLogFormat, fmt.Sprintf("Sets the log format. Permitted formats: %s.\nNon-default formats don't honor these flags: %s.\nNon-default choices are currently alpha and subject to change without warning.", formats, unsupportedFlags))
|
fs.StringVar(&o.LogFormat, logFormatFlagName, defaultLogFormat, fmt.Sprintf("Sets the log format. Permitted formats: %s.\nNon-default formats don't honor these flags: %s.\nNon-default choices are currently alpha and subject to change without warning.", formats, unsupportedFlags))
|
||||||
|
|
||||||
|
// No new log formats should be added after generation is of flag options
|
||||||
|
logRegistry.Freeze()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply set klog logger from LogFormat type
|
// Apply set klog logger from LogFormat type
|
||||||
func (o *Options) Apply() {
|
func (o *Options) Apply() {
|
||||||
// if log format not exists, use nil loggr
|
// if log format not exists, use nil loggr
|
||||||
loggr, _ := o.Get()
|
loggr, _ := o.Get()
|
||||||
|
|
||||||
klog.SetLogger(loggr)
|
klog.SetLogger(loggr)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ package logs
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/go-logr/logr"
|
"github.com/go-logr/logr"
|
||||||
json "k8s.io/component-base/logs/json"
|
json "k8s.io/component-base/logs/json"
|
||||||
@ -33,21 +32,22 @@ var logRegistry = NewLogFormatRegistry()
|
|||||||
// LogFormatRegistry store klog format registry
|
// LogFormatRegistry store klog format registry
|
||||||
type LogFormatRegistry struct {
|
type LogFormatRegistry struct {
|
||||||
registry map[string]logr.Logger
|
registry map[string]logr.Logger
|
||||||
mu sync.Mutex
|
frozen bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewLogFormatRegistry return new init LogFormatRegistry struct
|
// NewLogFormatRegistry return new init LogFormatRegistry struct
|
||||||
func NewLogFormatRegistry() *LogFormatRegistry {
|
func NewLogFormatRegistry() *LogFormatRegistry {
|
||||||
return &LogFormatRegistry{
|
return &LogFormatRegistry{
|
||||||
registry: make(map[string]logr.Logger),
|
registry: make(map[string]logr.Logger),
|
||||||
mu: sync.Mutex{},
|
frozen: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register new log format registry to global logRegistry
|
// Register new log format registry to global logRegistry
|
||||||
func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
|
func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
|
||||||
lfr.mu.Lock()
|
if lfr.frozen {
|
||||||
defer lfr.mu.Unlock()
|
return fmt.Errorf("log format is frozen, unable to register log format")
|
||||||
|
}
|
||||||
if _, ok := lfr.registry[name]; ok {
|
if _, ok := lfr.registry[name]; ok {
|
||||||
return fmt.Errorf("log format: %s already exists", name)
|
return fmt.Errorf("log format: %s already exists", name)
|
||||||
}
|
}
|
||||||
@ -57,8 +57,6 @@ func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
|
|||||||
|
|
||||||
// Get specified log format logger
|
// Get specified log format logger
|
||||||
func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
|
func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
|
||||||
lfr.mu.Lock()
|
|
||||||
defer lfr.mu.Unlock()
|
|
||||||
re, ok := lfr.registry[name]
|
re, ok := lfr.registry[name]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("log format: %s does not exists", name)
|
return nil, fmt.Errorf("log format: %s does not exists", name)
|
||||||
@ -67,23 +65,27 @@ func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set specified log format logger
|
// Set specified log format logger
|
||||||
func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) {
|
func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) error {
|
||||||
lfr.mu.Lock()
|
if lfr.frozen {
|
||||||
defer lfr.mu.Unlock()
|
return fmt.Errorf("log format is frozen, unable to set log format")
|
||||||
|
}
|
||||||
|
|
||||||
lfr.registry[name] = logger
|
lfr.registry[name] = logger
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete specified log format logger
|
// Delete specified log format logger
|
||||||
func (lfr *LogFormatRegistry) Delete(name string) {
|
func (lfr *LogFormatRegistry) Delete(name string) error {
|
||||||
lfr.mu.Lock()
|
if lfr.frozen {
|
||||||
defer lfr.mu.Unlock()
|
return fmt.Errorf("log format is frozen, unable to delete log format")
|
||||||
|
}
|
||||||
|
|
||||||
delete(lfr.registry, name)
|
delete(lfr.registry, name)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// List names of registered log formats
|
// List names of registered log formats
|
||||||
func (lfr *LogFormatRegistry) List() []string {
|
func (lfr *LogFormatRegistry) List() []string {
|
||||||
lfr.mu.Lock()
|
|
||||||
defer lfr.mu.Unlock()
|
|
||||||
formats := make([]string, 0, len(lfr.registry))
|
formats := make([]string, 0, len(lfr.registry))
|
||||||
for f := range lfr.registry {
|
for f := range lfr.registry {
|
||||||
formats = append(formats, f)
|
formats = append(formats, f)
|
||||||
@ -91,6 +93,10 @@ func (lfr *LogFormatRegistry) List() []string {
|
|||||||
return formats
|
return formats
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Freeze freezes the log format registry
|
||||||
|
func (lfr *LogFormatRegistry) Freeze() {
|
||||||
|
lfr.frozen = true
|
||||||
|
}
|
||||||
func init() {
|
func init() {
|
||||||
// Text format is default klog format
|
// Text format is default klog format
|
||||||
logRegistry.Register(defaultLogFormat, nil)
|
logRegistry.Register(defaultLogFormat, nil)
|
||||||
|
Loading…
Reference in New Issue
Block a user