github.com/hdt3213/godis@v1.2.9/lib/logger/files.go (about) 1 package logger 2 3 import ( 4 "fmt" 5 "os" 6 ) 7 8 func checkNotExist(src string) bool { 9 _, err := os.Stat(src) 10 return os.IsNotExist(err) 11 } 12 13 func checkPermission(src string) bool { 14 _, err := os.Stat(src) 15 return os.IsPermission(err) 16 } 17 18 func isNotExistMkDir(src string) error { 19 if checkNotExist(src) { 20 return mkDir(src) 21 } 22 return nil 23 24 } 25 26 func mkDir(src string) error { 27 return os.MkdirAll(src, os.ModePerm) 28 } 29 30 func mustOpen(fileName, dir string) (*os.File, error) { 31 if checkPermission(dir) { 32 return nil, fmt.Errorf("permission denied dir: %s", dir) 33 } 34 35 if err := isNotExistMkDir(dir); err != nil { 36 return nil, fmt.Errorf("error during make dir %s, err: %s", dir, err) 37 } 38 39 f, err := os.OpenFile(dir+string(os.PathSeparator)+fileName, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644) 40 if err != nil { 41 return nil, fmt.Errorf("fail to open file, err: %s", err) 42 } 43 44 return f, nil 45 }