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