diff --git a/logs/file.go b/logs/file.go index 1c2db882..e8c1f37e 100644 --- a/logs/file.go +++ b/logs/file.go @@ -56,17 +56,20 @@ type fileLogWriter struct { Perm string `json:"perm"` + RotatePerm string `json:"rotateperm"` + fileNameOnly, suffix string // like "project.log", project is fileNameOnly and .log is suffix } // newFileWriter create a FileLogWriter returning as LoggerInterface. func newFileWriter() Logger { w := &fileLogWriter{ - Daily: true, - MaxDays: 7, - Rotate: true, - Level: LevelTrace, - Perm: "0660", + Daily: true, + MaxDays: 7, + Rotate: true, + RotatePerm: "0440", + Level: LevelTrace, + Perm: "0660", } return w } @@ -237,8 +240,12 @@ func (w *fileLogWriter) doRotate(logTime time.Time) error { // Find the next available number num := 1 fName := "" + rotatePerm, err := strconv.ParseInt(w.RotatePerm, 8, 64) + if err != nil { + return err + } - _, err := os.Lstat(w.Filename) + _, err = os.Lstat(w.Filename) if err != nil { //even if the file is not exist or other ,we should RESTART the logger goto RESTART_LOGGER @@ -271,8 +278,9 @@ func (w *fileLogWriter) doRotate(logTime time.Time) error { if err != nil { goto RESTART_LOGGER } - err = os.Chmod(fName, os.FileMode(0440)) - // re-start logger + + err = os.Chmod(fName, os.FileMode(rotatePerm)) + RESTART_LOGGER: startLoggerErr := w.startLogger() diff --git a/logs/file_test.go b/logs/file_test.go index f345ff20..626521b9 100644 --- a/logs/file_test.go +++ b/logs/file_test.go @@ -185,11 +185,12 @@ func TestFileRotate_06(t *testing.T) { //test file mode } func testFileRotate(t *testing.T, fn1, fn2 string) { fw := &fileLogWriter{ - Daily: true, - MaxDays: 7, - Rotate: true, - Level: LevelTrace, - Perm: "0660", + Daily: true, + MaxDays: 7, + Rotate: true, + Level: LevelTrace, + Perm: "0660", + RotatePerm: "0440", } fw.Init(fmt.Sprintf(`{"filename":"%v","maxdays":1}`, fn1)) fw.dailyOpenTime = time.Now().Add(-24 * time.Hour) @@ -208,11 +209,12 @@ func testFileRotate(t *testing.T, fn1, fn2 string) { func testFileDailyRotate(t *testing.T, fn1, fn2 string) { fw := &fileLogWriter{ - Daily: true, - MaxDays: 7, - Rotate: true, - Level: LevelTrace, - Perm: "0660", + Daily: true, + MaxDays: 7, + Rotate: true, + Level: LevelTrace, + Perm: "0660", + RotatePerm: "0440", } fw.Init(fmt.Sprintf(`{"filename":"%v","maxdays":1}`, fn1)) fw.dailyOpenTime = time.Now().Add(-24 * time.Hour)