mirror of https://github.com/status-im/consul.git
Relates to #7447
This PR will allow consul to throw log error if provided log directory has permission issues for writing or is non existent. Signed-off-by: Deepjyoti Mondal djmdeveloper060796@gmail.com
This commit is contained in:
parent
7f03949424
commit
0b3af0e070
|
@ -130,6 +130,10 @@ func Setup(config *Config, ui cli.Ui) (hclog.InterceptLogger, *GatedWriter, io.W
|
||||||
MaxBytes: logRotateBytes,
|
MaxBytes: logRotateBytes,
|
||||||
MaxFiles: config.LogRotateMaxFiles,
|
MaxFiles: config.LogRotateMaxFiles,
|
||||||
}
|
}
|
||||||
|
if err := logFile.openNew(); err != nil {
|
||||||
|
ui.Error(fmt.Sprintf("Failed to setup logging: %v", err))
|
||||||
|
return nil, nil, nil, false
|
||||||
|
}
|
||||||
writers = append(writers, logFile)
|
writers = append(writers, logFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,10 @@ package logging
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/consul/sdk/testutil"
|
||||||
"github.com/mitchellh/cli"
|
"github.com/mitchellh/cli"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
@ -149,3 +151,64 @@ func TestLogger_SetupLoggerWithJSON(t *testing.T) {
|
||||||
require.Contains(jsonOutput, "@message")
|
require.Contains(jsonOutput, "@message")
|
||||||
require.Equal(jsonOutput["@message"], "test warn msg")
|
require.Equal(jsonOutput["@message"], "test warn msg")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestLogger_SetupLoggerWithValidLogPath(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
tmpDir := testutil.TempDir(t, t.Name())
|
||||||
|
defer os.RemoveAll(tmpDir)
|
||||||
|
|
||||||
|
cfg := &Config{
|
||||||
|
LogLevel: "INFO",
|
||||||
|
LogFilePath: tmpDir + "/",
|
||||||
|
}
|
||||||
|
ui := cli.NewMockUi()
|
||||||
|
|
||||||
|
logger, gatedWriter, writer, ok := Setup(cfg, ui)
|
||||||
|
require.True(ok)
|
||||||
|
require.NotNil(logger)
|
||||||
|
require.NotNil(gatedWriter)
|
||||||
|
require.NotNil(writer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLogger_SetupLoggerWithInValidLogPath(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
cfg := &Config{
|
||||||
|
LogLevel: "INFO",
|
||||||
|
LogFilePath: "nonexistentdir/",
|
||||||
|
}
|
||||||
|
ui := cli.NewMockUi()
|
||||||
|
|
||||||
|
logger, gatedWriter, writer, ok := Setup(cfg, ui)
|
||||||
|
require.Contains(ui.ErrorWriter.String(), "no such file or directory")
|
||||||
|
require.False(ok)
|
||||||
|
require.Nil(logger)
|
||||||
|
require.Nil(gatedWriter)
|
||||||
|
require.Nil(writer)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLogger_SetupLoggerWithInValidLogPathPermission(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
require := require.New(t)
|
||||||
|
|
||||||
|
tmpDir := "/tmp/" + t.Name()
|
||||||
|
|
||||||
|
os.Mkdir(tmpDir, 0000)
|
||||||
|
defer os.RemoveAll(tmpDir)
|
||||||
|
|
||||||
|
cfg := &Config{
|
||||||
|
LogLevel: "INFO",
|
||||||
|
LogFilePath: tmpDir + "/",
|
||||||
|
}
|
||||||
|
ui := cli.NewMockUi()
|
||||||
|
|
||||||
|
logger, gatedWriter, writer, ok := Setup(cfg, ui)
|
||||||
|
require.Contains(ui.ErrorWriter.String(), "permission denied")
|
||||||
|
require.False(ok)
|
||||||
|
require.Nil(logger)
|
||||||
|
require.Nil(gatedWriter)
|
||||||
|
require.Nil(writer)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue