diff --git a/internal/logger/logger.go b/internal/logger/logger.go index 5ef5244c7..9f80ace50 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -360,7 +360,10 @@ func logIf(ctx context.Context, err error, errKind ...interface{}) { // Iterate over all logger targets to send the log entry for _, t := range SystemTargets() { if err := t.Send(entry, entry.LogKind); err != nil { - LogAlwaysIf(context.Background(), fmt.Errorf("event(%v) was not sent to Logger target (%v): %v", entry, t, err), entry.LogKind) + if consoleTgt != nil { + entry.Trace.Message = fmt.Sprintf("event(%#v) was not sent to Logger target (%#v): %#v", entry, t, err) + consoleTgt.Send(entry, entry.LogKind) + } } } } diff --git a/internal/logger/targets.go b/internal/logger/targets.go index 4146a9053..9337bed5f 100644 --- a/internal/logger/targets.go +++ b/internal/logger/targets.go @@ -46,7 +46,11 @@ var ( // Must be immutable at all times. // Can be swapped to another while holding swapMu systemTargets = []Target{} - nTargets int32 // atomic count of len(targets) + + // This is always set represent /dev/console target + consoleTgt Target + + nTargets int32 // atomic count of len(targets) ) // SystemTargets returns active targets. @@ -90,6 +94,11 @@ func AddSystemTarget(t Target) error { return err } swapMu.Lock() + if consoleTgt == nil { + if t.Type() == types.TargetConsole { + consoleTgt = t + } + } updated := append(make([]Target, 0, len(systemTargets)+1), systemTargets...) updated = append(updated, t) systemTargets = updated