mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-02-04 10:05:17 -05:00
Compare commits
3 Commits
develop
...
fix-loggin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
333f900c67 | ||
|
|
17544dafe0 | ||
|
|
143c777006 |
@@ -85,6 +85,7 @@ go_library(
|
|||||||
"//consensus-types/primitives:go_default_library",
|
"//consensus-types/primitives:go_default_library",
|
||||||
"//crypto/bls:go_default_library",
|
"//crypto/bls:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
|
"//io/logs:go_default_library",
|
||||||
"//math:go_default_library",
|
"//math:go_default_library",
|
||||||
"//monitoring/tracing:go_default_library",
|
"//monitoring/tracing:go_default_library",
|
||||||
"//monitoring/tracing/trace:go_default_library",
|
"//monitoring/tracing/trace:go_default_library",
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
consensus_types "github.com/OffchainLabs/prysm/v7/consensus-types"
|
consensus_types "github.com/OffchainLabs/prysm/v7/consensus-types"
|
||||||
"github.com/OffchainLabs/prysm/v7/consensus-types/interfaces"
|
"github.com/OffchainLabs/prysm/v7/consensus-types/interfaces"
|
||||||
"github.com/OffchainLabs/prysm/v7/encoding/bytesutil"
|
"github.com/OffchainLabs/prysm/v7/encoding/bytesutil"
|
||||||
|
"github.com/OffchainLabs/prysm/v7/io/logs"
|
||||||
ethpb "github.com/OffchainLabs/prysm/v7/proto/prysm/v1alpha1"
|
ethpb "github.com/OffchainLabs/prysm/v7/proto/prysm/v1alpha1"
|
||||||
"github.com/OffchainLabs/prysm/v7/runtime/version"
|
"github.com/OffchainLabs/prysm/v7/runtime/version"
|
||||||
prysmTime "github.com/OffchainLabs/prysm/v7/time"
|
prysmTime "github.com/OffchainLabs/prysm/v7/time"
|
||||||
@@ -89,10 +90,16 @@ func logBlockSyncStatus(block interfaces.ReadOnlyBeaconBlock, blockRoot [32]byte
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
level := log.Logger.GetLevel()
|
|
||||||
if level >= logrus.DebugLevel {
|
|
||||||
parentRoot := block.ParentRoot()
|
parentRoot := block.ParentRoot()
|
||||||
lf := logrus.Fields{
|
|
||||||
|
lessFields := logrus.Fields{
|
||||||
|
"slot": block.Slot(),
|
||||||
|
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
||||||
|
"finalizedEpoch": finalized.Epoch,
|
||||||
|
"finalizedRoot": fmt.Sprintf("0x%s...", hex.EncodeToString(finalized.Root)[:8]),
|
||||||
|
"epoch": slots.ToEpoch(block.Slot()),
|
||||||
|
}
|
||||||
|
moreFields := logrus.Fields{
|
||||||
"slot": block.Slot(),
|
"slot": block.Slot(),
|
||||||
"slotInEpoch": block.Slot() % params.BeaconConfig().SlotsPerEpoch,
|
"slotInEpoch": block.Slot() % params.BeaconConfig().SlotsPerEpoch,
|
||||||
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
||||||
@@ -107,16 +114,15 @@ func logBlockSyncStatus(block interfaces.ReadOnlyBeaconBlock, blockRoot [32]byte
|
|||||||
"chainServiceProcessedTime": prysmTime.Now().Sub(receivedTime) - daWaitedTime,
|
"chainServiceProcessedTime": prysmTime.Now().Sub(receivedTime) - daWaitedTime,
|
||||||
"dataAvailabilityWaitedTime": daWaitedTime,
|
"dataAvailabilityWaitedTime": daWaitedTime,
|
||||||
}
|
}
|
||||||
log.WithFields(lf).Debug("Synced new block")
|
|
||||||
|
level := logs.PackageVerbosity("beacon-chain/blockchain")
|
||||||
|
if level >= logrus.DebugLevel {
|
||||||
|
log.WithFields(moreFields).Info("Synced new block")
|
||||||
} else {
|
} else {
|
||||||
log.WithFields(logrus.Fields{
|
log.WithFields(lessFields).WithField(logs.LogTargetField, logs.LogTargetUser).Info("Synced new block")
|
||||||
"slot": block.Slot(),
|
log.WithFields(moreFields).WithField(logs.LogTargetField, logs.LogTargetEphemeral).Info("Synced new block")
|
||||||
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
|
||||||
"finalizedEpoch": finalized.Epoch,
|
|
||||||
"finalizedRoot": fmt.Sprintf("0x%s...", hex.EncodeToString(finalized.Root)[:8]),
|
|
||||||
"epoch": slots.ToEpoch(block.Slot()),
|
|
||||||
}).Info("Synced new block")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
3
changelog/bastin_fix-logging-issue.md
Normal file
3
changelog/bastin_fix-logging-issue.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
### Changed
|
||||||
|
|
||||||
|
- Fixed the logging issue described in #16314.
|
||||||
@@ -188,8 +188,8 @@ func before(ctx *cli.Context) error {
|
|||||||
return errors.Wrap(err, "failed to parse log vmodule")
|
return errors.Wrap(err, "failed to parse log vmodule")
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the global logging level to allow for the highest verbosity requested
|
// set the global logging level and data
|
||||||
logs.SetLoggingLevel(max(verbosityLevel, maxLevel))
|
logs.SetLoggingLevelAndData(verbosityLevel, vmodule, maxLevel, ctx.Bool(flags.DisableEphemeralLogFile.Name))
|
||||||
|
|
||||||
format := ctx.String(cmd.LogFormat.Name)
|
format := ctx.String(cmd.LogFormat.Name)
|
||||||
switch format {
|
switch format {
|
||||||
@@ -210,6 +210,7 @@ func before(ctx *cli.Context) error {
|
|||||||
Formatter: formatter,
|
Formatter: formatter,
|
||||||
Writer: os.Stderr,
|
Writer: os.Stderr,
|
||||||
AllowedLevels: logrus.AllLevels[:max(verbosityLevel, maxLevel)+1],
|
AllowedLevels: logrus.AllLevels[:max(verbosityLevel, maxLevel)+1],
|
||||||
|
Identifier: logs.LogTargetUser,
|
||||||
})
|
})
|
||||||
case "fluentd":
|
case "fluentd":
|
||||||
f := joonix.NewFormatter()
|
f := joonix.NewFormatter()
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ func main() {
|
|||||||
return errors.Wrap(err, "failed to parse log vmodule")
|
return errors.Wrap(err, "failed to parse log vmodule")
|
||||||
}
|
}
|
||||||
|
|
||||||
// set the global logging level to allow for the highest verbosity requested
|
// set the global logging level and data
|
||||||
logs.SetLoggingLevel(max(maxLevel, verbosityLevel))
|
logs.SetLoggingLevelAndData(verbosityLevel, vmodule, maxLevel, ctx.Bool(flags.DisableEphemeralLogFile.Name))
|
||||||
|
|
||||||
logFileName := ctx.String(cmd.LogFileName.Name)
|
logFileName := ctx.String(cmd.LogFileName.Name)
|
||||||
|
|
||||||
@@ -188,6 +188,7 @@ func main() {
|
|||||||
Formatter: formatter,
|
Formatter: formatter,
|
||||||
Writer: os.Stderr,
|
Writer: os.Stderr,
|
||||||
AllowedLevels: logrus.AllLevels[:max(verbosityLevel, maxLevel)+1],
|
AllowedLevels: logrus.AllLevels[:max(verbosityLevel, maxLevel)+1],
|
||||||
|
Identifier: logs.LogTargetUser,
|
||||||
})
|
})
|
||||||
case "fluentd":
|
case "fluentd":
|
||||||
f := joonix.NewFormatter()
|
f := joonix.NewFormatter()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package logs
|
package logs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
@@ -10,6 +11,7 @@ type WriterHook struct {
|
|||||||
AllowedLevels []logrus.Level
|
AllowedLevels []logrus.Level
|
||||||
Writer io.Writer
|
Writer io.Writer
|
||||||
Formatter logrus.Formatter
|
Formatter logrus.Formatter
|
||||||
|
Identifier string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (hook *WriterHook) Levels() []logrus.Level {
|
func (hook *WriterHook) Levels() []logrus.Level {
|
||||||
@@ -20,6 +22,11 @@ func (hook *WriterHook) Levels() []logrus.Level {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (hook *WriterHook) Fire(entry *logrus.Entry) error {
|
func (hook *WriterHook) Fire(entry *logrus.Entry) error {
|
||||||
|
val, ok := entry.Data[LogTargetField]
|
||||||
|
if ok && fmt.Sprint(val) != hook.Identifier {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
line, err := hook.Formatter.Format(entry)
|
line, err := hook.Formatter.Format(entry)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -17,11 +17,43 @@ import (
|
|||||||
"gopkg.in/natefinch/lumberjack.v2"
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ephemeralLogFileVerbosity = logrus.DebugLevel
|
var (
|
||||||
|
userVerbosity = logrus.InfoLevel
|
||||||
|
vmodule = make(map[string]logrus.Level)
|
||||||
|
)
|
||||||
|
|
||||||
// SetLoggingLevel sets the base logging level for logrus.
|
const (
|
||||||
func SetLoggingLevel(lvl logrus.Level) {
|
ephemeralLogFileVerbosity = logrus.DebugLevel
|
||||||
logrus.SetLevel(max(lvl, ephemeralLogFileVerbosity))
|
LogTargetField = "log_target"
|
||||||
|
LogTargetEphemeral = "ephemeral"
|
||||||
|
LogTargetUser = "user"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SetLoggingLevelAndData sets the base logging level for logrus.
|
||||||
|
func SetLoggingLevelAndData(baseVerbosity logrus.Level, vmoduleMap map[string]logrus.Level, maxVmoduleLevel logrus.Level, disableEphemeral bool) {
|
||||||
|
userVerbosity = baseVerbosity
|
||||||
|
vmodule = vmoduleMap
|
||||||
|
|
||||||
|
globalLevel := max(baseVerbosity, maxVmoduleLevel)
|
||||||
|
if !disableEphemeral {
|
||||||
|
globalLevel = max(globalLevel, ephemeralLogFileVerbosity)
|
||||||
|
}
|
||||||
|
logrus.SetLevel(globalLevel)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PackageVerbosity returns the verbosity of a given package.
|
||||||
|
func PackageVerbosity(packagePath string) logrus.Level {
|
||||||
|
bestLen := 0
|
||||||
|
bestLevel := userVerbosity
|
||||||
|
for k, v := range vmodule {
|
||||||
|
if k == packagePath || strings.HasPrefix(packagePath, k+"/") {
|
||||||
|
if len(k) > bestLen {
|
||||||
|
bestLen = len(k)
|
||||||
|
bestLevel = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bestLevel
|
||||||
}
|
}
|
||||||
|
|
||||||
func addLogWriter(w io.Writer) {
|
func addLogWriter(w io.Writer) {
|
||||||
@@ -68,6 +100,7 @@ func ConfigurePersistentLogging(logFileName string, format string, lvl logrus.Le
|
|||||||
Formatter: formatter,
|
Formatter: formatter,
|
||||||
Writer: f,
|
Writer: f,
|
||||||
AllowedLevels: logrus.AllLevels[:max(lvl, maxVmoduleLevel)+1],
|
AllowedLevels: logrus.AllLevels[:max(lvl, maxVmoduleLevel)+1],
|
||||||
|
Identifier: LogTargetUser,
|
||||||
})
|
})
|
||||||
|
|
||||||
logrus.Debug("File logging initialized")
|
logrus.Debug("File logging initialized")
|
||||||
@@ -101,6 +134,7 @@ func ConfigureEphemeralLogFile(datadirPath string, app string) error {
|
|||||||
Formatter: formatter,
|
Formatter: formatter,
|
||||||
Writer: debugWriter,
|
Writer: debugWriter,
|
||||||
AllowedLevels: logrus.AllLevels[:ephemeralLogFileVerbosity+1],
|
AllowedLevels: logrus.AllLevels[:ephemeralLogFileVerbosity+1],
|
||||||
|
Identifier: LogTargetEphemeral,
|
||||||
})
|
})
|
||||||
|
|
||||||
logrus.WithField("path", logFilePath).Debug("Ephemeral log file initialized")
|
logrus.WithField("path", logFilePath).Debug("Ephemeral log file initialized")
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *logrus.Entry, keys
|
|||||||
_, err = fmt.Fprintf(b, "%s %s%s "+messageFormat, colorScheme.TimestampColor(timestamp), level, prefix, message)
|
_, err = fmt.Fprintf(b, "%s %s%s "+messageFormat, colorScheme.TimestampColor(timestamp), level, prefix, message)
|
||||||
}
|
}
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
if k != "package" {
|
if k != "package" && k != "log_target" {
|
||||||
v := entry.Data[k]
|
v := entry.Data[k]
|
||||||
|
|
||||||
format := "%+v"
|
format := "%+v"
|
||||||
|
|||||||
Reference in New Issue
Block a user