mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 21:08:10 -05:00
**What type of PR is this?** Feature **What does this PR do? Why is it needed?** This PR introduces an ephemeral log file that captures debug logs for 24 hours. - it captures debug logs regardless of the user provided (or non-provided) `--verbosity` flag. - it allows a maximum of 250MB for each log file. - it keeps 1 backup logfile in case of size-based rotations. (as opposed to time-based) - this is enabled by default for beacon and validator nodes. - the log files live in `datadir/logs/` directory under the names of `beacon-chain.log` and `validator.log`. backups have a timestamp in their name as well. - the feature can be disabled using the `--disable-ephemeral-log-file` flag.
100 lines
3.5 KiB
Go
100 lines
3.5 KiB
Go
package logs
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/OffchainLabs/prysm/v7/testing/require"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var urltests = []struct {
|
|
url string
|
|
maskedUrl string
|
|
}{
|
|
{"https://a:b@xyz.net", "https://***@xyz.net"},
|
|
{"https://eth-holesky.alchemyapi.io/v2/tOZG5mjl3.zl_nZdZTNIBUzsDq62R_dkOtY",
|
|
"https://eth-holesky.alchemyapi.io/***"},
|
|
{"https://google.com/search?q=golang", "https://google.com/***"},
|
|
{"https://user@example.com/foo%2fbar", "https://***@example.com/***"},
|
|
{"http://john@example.com/#x/y%2Fz", "http://***@example.com/#***"},
|
|
{"https://me:pass@example.com/foo/bar?x=1&y=2", "https://***@example.com/***"},
|
|
}
|
|
|
|
func TestMaskCredentialsLogging(t *testing.T) {
|
|
for _, test := range urltests {
|
|
require.Equal(t, MaskCredentialsLogging(test.url), test.maskedUrl)
|
|
}
|
|
}
|
|
|
|
func TestConfigurePersistantLogging(t *testing.T) {
|
|
testParentDir := t.TempDir()
|
|
|
|
// 1. Test creation of file in an existing parent directory
|
|
logFileName := "test.log"
|
|
existingDirectory := "test-1-existing-testing-dir"
|
|
|
|
err := ConfigurePersistentLogging(fmt.Sprintf("%s/%s/%s", testParentDir, existingDirectory, logFileName), "text", logrus.InfoLevel)
|
|
require.NoError(t, err)
|
|
|
|
// 2. Test creation of file along with parent directory
|
|
nonExistingDirectory := "test-2-non-existing-testing-dir"
|
|
|
|
err = ConfigurePersistentLogging(fmt.Sprintf("%s/%s/%s", testParentDir, nonExistingDirectory, logFileName), "text", logrus.InfoLevel)
|
|
require.NoError(t, err)
|
|
|
|
// 3. Test creation of file in an existing parent directory with a non-existing sub-directory
|
|
existingDirectory = "test-3-existing-testing-dir"
|
|
nonExistingSubDirectory := "test-3-non-existing-sub-dir"
|
|
err = os.Mkdir(fmt.Sprintf("%s/%s", testParentDir, existingDirectory), 0700)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
err = ConfigurePersistentLogging(fmt.Sprintf("%s/%s/%s/%s", testParentDir, existingDirectory, nonExistingSubDirectory, logFileName), "text", logrus.InfoLevel)
|
|
require.NoError(t, err)
|
|
|
|
//4. Create log file in a directory without 700 permissions
|
|
existingDirectory = "test-4-existing-testing-dir"
|
|
err = os.Mkdir(fmt.Sprintf("%s/%s", testParentDir, existingDirectory), 0750)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestConfigureEphemeralLogFile(t *testing.T) {
|
|
testParentDir := t.TempDir()
|
|
|
|
// 1. Test creation of file in an existing parent directory
|
|
existingDirectory := "test-1-existing-testing-dir"
|
|
|
|
err := ConfigureEphemeralLogFile(fmt.Sprintf("%s/%s", testParentDir, existingDirectory), "beacon-chain")
|
|
require.NoError(t, err)
|
|
|
|
// 2. Test creation of file along with parent directory
|
|
nonExistingDirectory := "test-2-non-existing-testing-dir"
|
|
|
|
err = ConfigureEphemeralLogFile(fmt.Sprintf("%s/%s", testParentDir, nonExistingDirectory), "beacon-chain")
|
|
require.NoError(t, err)
|
|
|
|
// 3. Test creation of file in an existing parent directory with a non-existing sub-directory
|
|
existingDirectory = "test-3-existing-testing-dir"
|
|
nonExistingSubDirectory := "test-3-non-existing-sub-dir"
|
|
err = os.Mkdir(fmt.Sprintf("%s/%s", testParentDir, existingDirectory), 0700)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = ConfigureEphemeralLogFile(fmt.Sprintf("%s/%s/%s", testParentDir, existingDirectory, nonExistingSubDirectory), "beacon-chain")
|
|
require.NoError(t, err)
|
|
|
|
//4. Create log file in a directory without 700 permissions
|
|
existingDirectory = "test-4-existing-testing-dir"
|
|
err = os.Mkdir(fmt.Sprintf("%s/%s", testParentDir, existingDirectory), 0750)
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = ConfigureEphemeralLogFile(fmt.Sprintf("%s/%s/%s", testParentDir, existingDirectory, nonExistingSubDirectory), "beacon-chain")
|
|
require.NoError(t, err)
|
|
}
|