Merge pull request #7469 from djmgit/log_dir

Fix #7468 : Out log error for invalid log directory
This commit is contained in:
Daniel Nephin 2020-05-12 14:26:52 -04:00 committed by GitHub
commit 0a3da07d84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 0 deletions

View File

@ -130,6 +130,10 @@ func Setup(config *Config, ui cli.Ui) (hclog.InterceptLogger, *GatedWriter, io.W
MaxBytes: logRotateBytes,
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)
}

View File

@ -2,8 +2,10 @@ package logging
import (
"encoding/json"
"os"
"testing"
"github.com/hashicorp/consul/sdk/testutil"
"github.com/mitchellh/cli"
"github.com/stretchr/testify/require"
)
@ -149,3 +151,64 @@ func TestLogger_SetupLoggerWithJSON(t *testing.T) {
require.Contains(jsonOutput, "@message")
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)
}