kubelatte-ce
Форк от sbertech/kubelatte-ce
51 строка · 1.1 Кб
1package logger
2
3import (
4"errors"
5"io/fs"
6"os"
7"path/filepath"
8)
9
10var Fs FileSystem = osFS{}
11
12// osFS implements fileSystem using the local disk.
13type osFS struct{}
14
15func (osFS) OpenFile(name string, flag int, perm os.FileMode) (*os.File, error) {
16return os.OpenFile(name, flag, perm)
17}
18func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
19
20func (osFS) Remove(name string) error {
21return os.Remove(name)
22}
23
24type FileSystem interface {
25OpenFile(name string, flag int, perm os.FileMode) (*os.File, error)
26Stat(name string) (os.FileInfo, error)
27Remove(name string) error
28}
29
30func createLoggerFile(filePath, fileName string) (*os.File, error) {
31_, err := Fs.Stat(filePath)
32if err != nil {
33if errors.Is(err, fs.ErrNotExist) {
34err = os.Mkdir(filePath, os.FileMode(0755))
35if err != nil {
36return &os.File{}, err
37}
38} else {
39return &os.File{}, err
40}
41}
42
43fullPath := filepath.Join(filePath, fileName)
44
45f, err := Fs.OpenFile(fullPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755)
46if err != nil {
47return &os.File{}, err
48}
49
50return f, nil
51}
52