From 6fc1dd9260bf13688702a649ecbb230327dc0964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=94=8B10253908?= Date: Thu, 11 Mar 2021 18:10:37 +0800 Subject: [PATCH] Create the file when the file does not exist --- lumberjack.go | 4 +++- lumberjack_test.go | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lumberjack.go b/lumberjack.go index 3447cdc..6453297 100644 --- a/lumberjack.go +++ b/lumberjack.go @@ -143,7 +143,9 @@ func (l *Logger) Write(p []byte) (n int, err error) { ) } - if l.file == nil { + //create file when 1)init 2)file does not exist + _, err = osStat(l.filename()) + if l.file == nil || os.IsNotExist(err) { if err = l.openExistingOrNew(len(p)); err != nil { return 0, err } diff --git a/lumberjack_test.go b/lumberjack_test.go index 484ee9d..4a68c38 100644 --- a/lumberjack_test.go +++ b/lumberjack_test.go @@ -74,6 +74,28 @@ func TestOpenExisting(t *testing.T) { fileCount(dir, 1, t) } +func TestOpenNotExisting(t *testing.T) { + currentTime = fakeTime + dir := makeTempDir("TestOpenNotExisting", t) + defer os.RemoveAll(dir) + + filename := logFile(dir) + l := &Logger{ + Filename: filename, + } + defer l.Close() + b := []byte("boo!") + n, err := l.Write(b) + isNil(err, t) + equals(len(b), n, t) + + // make sure the file got appended + existsWithContent(filename, append(b), t) + + // make sure no other files were created + fileCount(dir, 1, t) +} + func TestWriteTooLong(t *testing.T) { currentTime = fakeTime megabyte = 1