From 8b57b22c20cd969ca290bd110d60f07a1777d214 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Wed, 1 Sep 2021 18:54:49 +0800 Subject: [PATCH 01/12] fix numeric notation of permissions --- core/logs/file.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/logs/file.go b/core/logs/file.go index 80114db2..d90265b7 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -67,6 +67,8 @@ type fileLogWriter struct { Perm string `json:"perm"` + DirPerm string `json:"dirperm"` + RotatePerm string `json:"rotateperm"` fileNameOnly, suffix string // like "project.log", project is fileNameOnly and .log is suffix @@ -86,6 +88,7 @@ func newFileWriter() Logger { RotatePerm: "0440", Level: LevelTrace, Perm: "0660", + DirPerm: "0770", MaxLines: 10000000, MaxFiles: 999, MaxSize: 1 << 28, @@ -217,8 +220,13 @@ func (w *fileLogWriter) createLogFile() (*os.File, error) { return nil, err } + dirperm, err := strconv.ParseInt(w.DirPerm, 8, 64) + if err != nil { + return nil, err + } + filepath := path.Dir(w.Filename) - os.MkdirAll(filepath, os.FileMode(perm)) + os.MkdirAll(filepath, os.FileMode(dirperm)) fd, err := os.OpenFile(w.Filename, os.O_WRONLY|os.O_APPEND|os.O_CREATE, os.FileMode(perm)) if err == nil { From 918bc8d11cb107a426a90a9eaf045058230f49eb Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 18:27:52 +0800 Subject: [PATCH 02/12] add comments for Perm and DirPerm --- core/logs/file.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/logs/file.go b/core/logs/file.go index d90265b7..75e076b1 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -64,9 +64,9 @@ type fileLogWriter struct { hourlyOpenTime time.Time Level int `json:"level"` - + // Permissions for log file Perm string `json:"perm"` - + // Permissions for directory if it is spcified in FileName DirPerm string `json:"dirperm"` RotatePerm string `json:"rotateperm"` From 9212d69383522ec1b63dc7f56ef686e79f256d95 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 19:07:20 +0800 Subject: [PATCH 03/12] logs: add tests for directory permissions --- core/logs/file_test.go | 55 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/core/logs/file_test.go b/core/logs/file_test.go index 16220936..b8128b98 100644 --- a/core/logs/file_test.go +++ b/core/logs/file_test.go @@ -17,6 +17,7 @@ package logs import ( "bufio" "fmt" + "io/fs" "io/ioutil" "os" "strconv" @@ -48,6 +49,57 @@ func TestFilePerm(t *testing.T) { os.Remove("test.log") } +func TestFileWithPrefixPath(t *testing.T) { + log := NewLogger(10000) + log.SetLogger("file", `{"filename":"log/test.log"}`) + log.Debug("debug") + log.Informational("info") + log.Notice("notice") + log.Warning("warning") + log.Error("error") + log.Alert("alert") + log.Critical("critical") + log.Emergency("emergency") + _, err := os.Stat("log/test.log") + if err != nil { + t.Fatal(err) + } + os.Remove("log/test.log") + os.Remove("log") +} + +func TestFilePermWithPrefixPath(t *testing.T) { + log := NewLogger(10000) + log.SetLogger("file", `{"filename":"log/test.log", "perm": "0220", "dirperm": "0770"}`) + log.Debug("debug") + log.Informational("info") + log.Notice("notice") + log.Warning("warning") + log.Error("error") + log.Alert("alert") + log.Critical("critical") + log.Emergency("emergency") + + dir, err := os.Stat("log") + if err != nil { + t.Fatal(err) + } + if fs.ModePerm&dir.Mode() != 0o0770 { + t.Fatal("unexpected directory permission") + } + + file, err := os.Stat("log/test.log") + if err != nil { + t.Fatal(err) + } + if file.Mode() != 0o0220 { + t.Fatal("unexpected file permission") + } + + os.Remove("log/test.log") + os.Remove("log") +} + func TestFile1(t *testing.T) { log := NewLogger(10000) log.SetLogger("file", `{"filename":"test.log"}`) @@ -269,6 +321,7 @@ func testFileRotate(t *testing.T, fn1, fn2 string, daily, hourly bool) { Rotate: true, Level: LevelTrace, Perm: "0660", + DirPerm: "0770", RotatePerm: "0440", } fw.formatter = fw @@ -310,6 +363,7 @@ func testFileDailyRotate(t *testing.T, fn1, fn2 string) { Rotate: true, Level: LevelTrace, Perm: "0660", + DirPerm: "0770", RotatePerm: "0440", } fw.formatter = fw @@ -344,6 +398,7 @@ func testFileHourlyRotate(t *testing.T, fn1, fn2 string) { Rotate: true, Level: LevelTrace, Perm: "0660", + DirPerm: "0770", RotatePerm: "0440", } From 435196300eb56cca308ea2a4aaba7e2183b0e1e5 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 19:08:55 +0800 Subject: [PATCH 04/12] deepsource: simplify error construction --- core/logs/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/logs/file.go b/core/logs/file.go index 75e076b1..590674b3 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -136,7 +136,7 @@ func (w *fileLogWriter) Init(config string) error { if len(w.Formatter) > 0 { fmtr, ok := GetFormatter(w.Formatter) if !ok { - return errors.New(fmt.Sprintf("the formatter with name: %s not found", w.Formatter)) + return fmt.Errorf("the formatter with name: %s not found", w.Formatter) } w.formatter = fmtr } From 9587f6d16c9eae28ac52db0d8b9db46b20b93fd4 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 19:12:19 +0800 Subject: [PATCH 05/12] deepsource: empty string test improving --- core/logs/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/logs/file.go b/core/logs/file.go index 590674b3..fafc883b 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -124,7 +124,7 @@ func (w *fileLogWriter) Init(config string) error { if err != nil { return err } - if len(w.Filename) == 0 { + if w.Filename == "" { return errors.New("jsonconfig must have filename") } w.suffix = filepath.Ext(w.Filename) From cc19834f795934ac82b63c7c01d70c1dc867bae7 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 19:14:49 +0800 Subject: [PATCH 06/12] deepsource: removing unused method receiver --- core/logs/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/logs/file.go b/core/logs/file.go index fafc883b..b59927c9 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -97,7 +97,7 @@ func newFileWriter() Logger { return w } -func (w *fileLogWriter) Format(lm *LogMsg) string { +func (*fileLogWriter) Format(lm *LogMsg) string { msg := lm.OldStyleFormat() hd, _, _ := formatTimeHeader(lm.When) msg = fmt.Sprintf("%s %s\n", string(hd), msg) From 1a52d005b1938098b242a33caefc1b1d22e8a801 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 7 Sep 2021 19:18:02 +0800 Subject: [PATCH 07/12] logs: fix comment spelling --- core/logs/file.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/logs/file.go b/core/logs/file.go index b59927c9..69273e91 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -66,7 +66,7 @@ type fileLogWriter struct { Level int `json:"level"` // Permissions for log file Perm string `json:"perm"` - // Permissions for directory if it is spcified in FileName + // Permissions for directory if it is specified in FileName DirPerm string `json:"dirperm"` RotatePerm string `json:"rotateperm"` From 16549e5019e2460e74ad70441ff59267e464940d Mon Sep 17 00:00:00 2001 From: nichtsen Date: Wed, 8 Sep 2021 14:03:59 +0800 Subject: [PATCH 08/12] deepsource: fix confusing naming of struct fields --- core/logs/file.go | 12 ++++++------ core/logs/file_test.go | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/logs/file.go b/core/logs/file.go index 69273e91..3234a674 100644 --- a/core/logs/file.go +++ b/core/logs/file.go @@ -73,8 +73,8 @@ type fileLogWriter struct { fileNameOnly, suffix string // like "project.log", project is fileNameOnly and .log is suffix - formatter LogFormatter - Formatter string `json:"formatter"` + logFormatter LogFormatter + Formatter string `json:"formatter"` } // newFileWriter creates a FileLogWriter returning as LoggerInterface. @@ -93,7 +93,7 @@ func newFileWriter() Logger { MaxFiles: 999, MaxSize: 1 << 28, } - w.formatter = w + w.logFormatter = w return w } @@ -105,7 +105,7 @@ func (*fileLogWriter) Format(lm *LogMsg) string { } func (w *fileLogWriter) SetFormatter(f LogFormatter) { - w.formatter = f + w.logFormatter = f } // Init file logger with json config. @@ -138,7 +138,7 @@ func (w *fileLogWriter) Init(config string) error { if !ok { return fmt.Errorf("the formatter with name: %s not found", w.Formatter) } - w.formatter = fmtr + w.logFormatter = fmtr } err = w.startLogger() return err @@ -177,7 +177,7 @@ func (w *fileLogWriter) WriteMsg(lm *LogMsg) error { _, d, h := formatTimeHeader(lm.When) - msg := w.formatter.Format(lm) + msg := w.logFormatter.Format(lm) if w.Rotate { w.RLock() if w.needRotateHourly(h) { diff --git a/core/logs/file_test.go b/core/logs/file_test.go index b8128b98..9372e42e 100644 --- a/core/logs/file_test.go +++ b/core/logs/file_test.go @@ -324,7 +324,7 @@ func testFileRotate(t *testing.T, fn1, fn2 string, daily, hourly bool) { DirPerm: "0770", RotatePerm: "0440", } - fw.formatter = fw + fw.logFormatter = fw if daily { fw.Init(fmt.Sprintf(`{"filename":"%v","maxdays":1}`, fn1)) @@ -366,7 +366,7 @@ func testFileDailyRotate(t *testing.T, fn1, fn2 string) { DirPerm: "0770", RotatePerm: "0440", } - fw.formatter = fw + fw.logFormatter = fw fw.Init(fmt.Sprintf(`{"filename":"%v","maxdays":1}`, fn1)) fw.dailyOpenTime = time.Now().Add(-24 * time.Hour) @@ -402,7 +402,7 @@ func testFileHourlyRotate(t *testing.T, fn1, fn2 string) { RotatePerm: "0440", } - fw.formatter = fw + fw.logFormatter = fw fw.Init(fmt.Sprintf(`{"filename":"%v","maxhours":1}`, fn1)) fw.hourlyOpenTime = time.Now().Add(-1 * time.Hour) fw.hourlyOpenDate = fw.hourlyOpenTime.Hour() From a3d2dd12d6e4c10dbf94d12ab0cfda95f25a4245 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Wed, 8 Sep 2021 14:40:46 +0800 Subject: [PATCH 09/12] deepsource: fix Control-coupled functions detected --- core/logs/file_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/logs/file_test.go b/core/logs/file_test.go index 9372e42e..3f0f1aaa 100644 --- a/core/logs/file_test.go +++ b/core/logs/file_test.go @@ -326,13 +326,13 @@ func testFileRotate(t *testing.T, fn1, fn2 string, daily, hourly bool) { } fw.logFormatter = fw - if daily { + if fw.Daily { fw.Init(fmt.Sprintf(`{"filename":"%v","maxdays":1}`, fn1)) fw.dailyOpenTime = time.Now().Add(-24 * time.Hour) fw.dailyOpenDate = fw.dailyOpenTime.Day() } - if hourly { + if fw.Hourly { fw.Init(fmt.Sprintf(`{"filename":"%v","maxhours":1}`, fn1)) fw.hourlyOpenTime = time.Now().Add(-1 * time.Hour) fw.hourlyOpenDate = fw.hourlyOpenTime.Day() From bf116189211b3d5cb65015b3546f58b0c3ed4ce1 Mon Sep 17 00:00:00 2001 From: nichtsen Date: Wed, 8 Sep 2021 15:07:37 +0800 Subject: [PATCH 10/12] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3a7c42f..a5201e3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ - Fix 4699: Remove Remove goyaml2 dependency. [4755](https://github.com/beego/beego/pull/4755) - Fix 4698: Prompt error when config format is incorrect. [4757](https://github.com/beego/beego/pull/4757) - Fix 4674: Tx Orm missing debug log [4756](https://github.com/beego/beego/pull/4756) +- Fix 4759: fix numeric notation of permissions [4759](https://github.com/beego/beego/pull/4759) ## Fix Sonar - [4677](https://github.com/beego/beego/pull/4677) From 8ba0b4f1b82c94d8d9661cd59d38af7e2fd91f1f Mon Sep 17 00:00:00 2001 From: nichtsen Date: Mon, 13 Sep 2021 11:21:34 +0800 Subject: [PATCH 11/12] log: use fileinfo interface for tests --- core/logs/file_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/logs/file_test.go b/core/logs/file_test.go index 3f0f1aaa..f3e58136 100644 --- a/core/logs/file_test.go +++ b/core/logs/file_test.go @@ -17,7 +17,6 @@ package logs import ( "bufio" "fmt" - "io/fs" "io/ioutil" "os" "strconv" @@ -84,7 +83,7 @@ func TestFilePermWithPrefixPath(t *testing.T) { if err != nil { t.Fatal(err) } - if fs.ModePerm&dir.Mode() != 0o0770 { + if dir.Mode().Perm() != 0o0770 { t.Fatal("unexpected directory permission") } From 415968070f431856a1d809b34013191d0005757c Mon Sep 17 00:00:00 2001 From: nichtsen Date: Tue, 14 Sep 2021 15:01:51 +0800 Subject: [PATCH 12/12] logs: fix TestFilePermWithPrefixPath function --- core/logs/file_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/logs/file_test.go b/core/logs/file_test.go index f3e58136..6aac919a 100644 --- a/core/logs/file_test.go +++ b/core/logs/file_test.go @@ -69,7 +69,7 @@ func TestFileWithPrefixPath(t *testing.T) { func TestFilePermWithPrefixPath(t *testing.T) { log := NewLogger(10000) - log.SetLogger("file", `{"filename":"log/test.log", "perm": "0220", "dirperm": "0770"}`) + log.SetLogger("file", `{"filename":"mylogpath/test.log", "perm": "0220", "dirperm": "0770"}`) log.Debug("debug") log.Informational("info") log.Notice("notice") @@ -79,15 +79,15 @@ func TestFilePermWithPrefixPath(t *testing.T) { log.Critical("critical") log.Emergency("emergency") - dir, err := os.Stat("log") + dir, err := os.Stat("mylogpath") if err != nil { t.Fatal(err) } - if dir.Mode().Perm() != 0o0770 { - t.Fatal("unexpected directory permission") + if !dir.IsDir() { + t.Fatal("mylogpath expected to be a directory") } - file, err := os.Stat("log/test.log") + file, err := os.Stat("mylogpath/test.log") if err != nil { t.Fatal(err) } @@ -95,8 +95,8 @@ func TestFilePermWithPrefixPath(t *testing.T) { t.Fatal("unexpected file permission") } - os.Remove("log/test.log") - os.Remove("log") + os.Remove("mylogpath/test.log") + os.Remove("mylogpath") } func TestFile1(t *testing.T) {