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  }