Merge pull request #32 from primevprotocol/introduce-log-tags

feat: introduce log tags
This commit is contained in:
mrekucci 2024-03-20 02:40:23 +04:00 committed by GitHub
commit 8b89ba7d26
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 50 additions and 17 deletions

View file

@ -3,7 +3,9 @@ set -exu
GETH_BIN_PATH=${GETH_BIN_PATH:-geth} GETH_BIN_PATH=${GETH_BIN_PATH:-geth}
GENESIS_L1_PATH=${GENESIS_L1_PATH:-/genesis.json} GENESIS_L1_PATH=${GENESIS_L1_PATH:-/genesis.json}
VERBOSITY=${VERBOSITY:-3} GETH_VERBOSITY=${GETH_VERBOSITY:-3}
GETH_LOG_FORMAT=${GETH_LOG_FORMAT:-terminal}
GETH_LOG_TAGS=${GETH_LOG_TAGS:-}
GETH_SYNC_MODE=${GETH_SYNC_MODE:-full} GETH_SYNC_MODE=${GETH_SYNC_MODE:-full}
GETH_DATA_DIR=${GETH_DATA_DIR:-/data} GETH_DATA_DIR=${GETH_DATA_DIR:-/data}
GETH_CHAINDATA_DIR="$GETH_DATA_DIR/geth/chaindata" GETH_CHAINDATA_DIR="$GETH_DATA_DIR/geth/chaindata"
@ -23,9 +25,12 @@ if [ "$GETH_NODE_TYPE" = "signer" ]; then
if [ -n "$BLOCK_SIGNER_PRIVATE_KEY" ]; then if [ -n "$BLOCK_SIGNER_PRIVATE_KEY" ]; then
echo "$GETH_KEYSTORE_DIR missing, running account import" echo "$GETH_KEYSTORE_DIR missing, running account import"
echo -n "$BLOCK_SIGNER_PRIVATE_KEY" | sed 's/0x//' > "$GETH_DATA_DIR"/block-signer-key echo -n "$BLOCK_SIGNER_PRIVATE_KEY" | sed 's/0x//' > "$GETH_DATA_DIR"/block-signer-key
"$GETH_BIN_PATH" --verbosity="$VERBOSITY" \ "$GETH_BIN_PATH" \
--nousb \
account import \ account import \
--verbosity="$GETH_VERBOSITY" \
--log.format="$GETH_LOG_FORMAT" \
--log.tags="$GETH_LOG_TAGS" \
--nousb \
--datadir="$GETH_DATA_DIR" \ --datadir="$GETH_DATA_DIR" \
--password="$GETH_DATA_DIR"/password \ --password="$GETH_DATA_DIR"/password \
"$GETH_DATA_DIR"/block-signer-key "$GETH_DATA_DIR"/block-signer-key
@ -33,7 +38,7 @@ if [ "$GETH_NODE_TYPE" = "signer" ]; then
else else
echo "$GETH_KEYSTORE_DIR exists." echo "$GETH_KEYSTORE_DIR exists."
if [ -z "$BLOCK_SIGNER_PRIVATE_KEY" ]; then if [ -z "$BLOCK_SIGNER_PRIVATE_KEY" ]; then
GETH_ACCOUNT_LIST=$("$GETH_BIN_PATH" --verbosity="$VERBOSITY" account list --datadir "$GETH_DATA_DIR") GETH_ACCOUNT_LIST=$("$GETH_BIN_PATH" --verbosity="$GETH_VERBOSITY" account list --datadir "$GETH_DATA_DIR")
BLOCK_SIGNER_ADDRESS_WITHOUT_PREFIX=$(echo "$GETH_ACCOUNT_LIST" | grep -oE '[0-9a-fA-F]{40}$') BLOCK_SIGNER_ADDRESS_WITHOUT_PREFIX=$(echo "$GETH_ACCOUNT_LIST" | grep -oE '[0-9a-fA-F]{40}$')
BLOCK_SIGNER_ADDRESS="0x$BLOCK_SIGNER_ADDRESS_WITHOUT_PREFIX" BLOCK_SIGNER_ADDRESS="0x$BLOCK_SIGNER_ADDRESS_WITHOUT_PREFIX"
echo "Block signer address with 0x prefix: $BLOCK_SIGNER_ADDRESS" echo "Block signer address with 0x prefix: $BLOCK_SIGNER_ADDRESS"
@ -45,7 +50,10 @@ fi
if [ ! -d "$GETH_CHAINDATA_DIR" ]; then if [ ! -d "$GETH_CHAINDATA_DIR" ]; then
echo "$GETH_CHAINDATA_DIR missing, running init" echo "$GETH_CHAINDATA_DIR missing, running init"
echo "Initializing genesis." echo "Initializing genesis."
"$GETH_BIN_PATH" --verbosity="$VERBOSITY" \ "$GETH_BIN_PATH" \
--verbosity="$GETH_VERBOSITY" \
--log.format="$GETH_LOG_FORMAT" \
--log.tags="$GETH_LOG_TAGS" \
--nousb \ --nousb \
--state.scheme=path \ --state.scheme=path \
--db.engine=pebble \ --db.engine=pebble \
@ -78,7 +86,9 @@ if [ "$GETH_NODE_TYPE" = "bootnode" ]; then
echo "$BOOT_KEY" > $GETH_DATA_DIR/boot.key echo "$BOOT_KEY" > $GETH_DATA_DIR/boot.key
exec "$GETH_BIN_PATH" \ exec "$GETH_BIN_PATH" \
--verbosity="$VERBOSITY" \ --verbosity="$GETH_VERBOSITY" \
--log.format="$GETH_LOG_FORMAT" \
--log.tags="$GETH_LOG_TAGS" \
--datadir="$GETH_DATA_DIR" \ --datadir="$GETH_DATA_DIR" \
--port 30301 \ --port 30301 \
--http \ --http \
@ -101,9 +111,9 @@ if [ "$GETH_NODE_TYPE" = "bootnode" ]; then
--metrics \ --metrics \
--metrics.addr="$NODE_IP" \ --metrics.addr="$NODE_IP" \
--metrics.port=6060 \ --metrics.port=6060 \
--pprof \ --pprof \
--pprof.addr="$NODE_IP" \ --pprof.addr="$NODE_IP" \
--pprof.port=60601 \ --pprof.port=60601 \
--nodekey $GETH_DATA_DIR/boot.key \ --nodekey $GETH_DATA_DIR/boot.key \
--netrestrict $NET_RESTRICT \ --netrestrict $NET_RESTRICT \
"$NAT_FLAG" \ "$NAT_FLAG" \
@ -118,7 +128,9 @@ elif [ "$GETH_NODE_TYPE" = "signer" ]; then
GETH_PORT="${GETH_PORT:-30311}" GETH_PORT="${GETH_PORT:-30311}"
exec "$GETH_BIN_PATH" \ exec "$GETH_BIN_PATH" \
--verbosity="$VERBOSITY" \ --verbosity="$GETH_VERBOSITY" \
--log.format="$GETH_LOG_FORMAT" \
--log.tags="$GETH_LOG_TAGS" \
--datadir="$GETH_DATA_DIR" \ --datadir="$GETH_DATA_DIR" \
--port="$GETH_PORT" \ --port="$GETH_PORT" \
--syncmode="${GETH_SYNC_MODE}" \ --syncmode="${GETH_SYNC_MODE}" \
@ -143,9 +155,9 @@ elif [ "$GETH_NODE_TYPE" = "signer" ]; then
--metrics \ --metrics \
--metrics.addr="$NODE_IP" \ --metrics.addr="$NODE_IP" \
--metrics.port=6060 \ --metrics.port=6060 \
--pprof \ --pprof \
--pprof.addr="$NODE_IP" \ --pprof.addr="$NODE_IP" \
--pprof.port=60601 \ --pprof.port=60601 \
--ws \ --ws \
--ws.addr="$NODE_IP" \ --ws.addr="$NODE_IP" \
--ws.port="$WS_PORT" \ --ws.port="$WS_PORT" \
@ -166,7 +178,9 @@ elif [ "$GETH_NODE_TYPE" = "member" ]; then
GETH_PORT="${GETH_PORT:-30311}" GETH_PORT="${GETH_PORT:-30311}"
exec "$GETH_BIN_PATH" \ exec "$GETH_BIN_PATH" \
--verbosity="$VERBOSITY" \ --verbosity="$GETH_VERBOSITY" \
--log.format="$GETH_LOG_FORMAT" \
--log.tags="$GETH_LOG_TAGS" \
--datadir="$GETH_DATA_DIR" \ --datadir="$GETH_DATA_DIR" \
--port="$GETH_PORT" \ --port="$GETH_PORT" \
--syncmode="${GETH_SYNC_MODE}" \ --syncmode="${GETH_SYNC_MODE}" \
@ -185,9 +199,9 @@ elif [ "$GETH_NODE_TYPE" = "member" ]; then
--metrics \ --metrics \
--metrics.addr="$NODE_IP" \ --metrics.addr="$NODE_IP" \
--metrics.port=6060 \ --metrics.port=6060 \
--pprof \ --pprof \
--pprof.addr="$NODE_IP" \ --pprof.addr="$NODE_IP" \
--pprof.port=60601 \ --pprof.port=60601 \
--ws \ --ws \
--ws.addr="$NODE_IP" \ --ws.addr="$NODE_IP" \
--ws.port="$WS_PORT" \ --ws.port="$WS_PORT" \

View file

@ -25,6 +25,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"runtime" "runtime"
"strings"
"github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/internal/flags"
"github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/log"
@ -71,6 +72,11 @@ var (
Usage: "Log format to use (json|logfmt|terminal)", Usage: "Log format to use (json|logfmt|terminal)",
Category: flags.LoggingCategory, Category: flags.LoggingCategory,
} }
logTagsFlag = &cli.StringFlag{
Name: "log.tags",
Usage: "A comma-separated list of <name>:<value> pairs that will be inserted into each log line",
Category: flags.LoggingCategory,
}
logFileFlag = &cli.StringFlag{ logFileFlag = &cli.StringFlag{
Name: "log.file", Name: "log.file",
Usage: "Write logs to a file", Usage: "Write logs to a file",
@ -152,6 +158,7 @@ var Flags = []cli.Flag{
vmoduleFlag, vmoduleFlag,
logjsonFlag, logjsonFlag,
logFormatFlag, logFormatFlag,
logTagsFlag,
logFileFlag, logFileFlag,
logRotateFlag, logRotateFlag,
logMaxSizeMBsFlag, logMaxSizeMBsFlag,
@ -252,6 +259,18 @@ func Setup(ctx *cli.Context) error {
return fmt.Errorf("unknown log format: %v", ctx.String(logFormatFlag.Name)) return fmt.Errorf("unknown log format: %v", ctx.String(logFormatFlag.Name))
} }
if tags := ctx.String(logTagsFlag.Name); tags != "" {
var attrs []slog.Attr
for i, p := range strings.Split(tags, ",") {
kv := strings.Split(p, ":")
if len(kv) != 2 {
return fmt.Errorf("invalid log tag %q at index %d", p, i)
}
attrs = append(attrs, slog.String(strings.ToValidUTF8(kv[0], "<22>"), strings.ToValidUTF8(kv[1], "<22>")))
}
handler = handler.WithAttrs(attrs)
}
glogger = log.NewGlogHandler(handler) glogger = log.NewGlogHandler(handler)
// logging // logging