kubelatte-ce

Форк
2
Форк от sbertech/kubelatte-ce
51 строка · 1.1 Кб
1
package logger
2

3
import (
4
	"errors"
5
	"io/fs"
6
	"os"
7
	"path/filepath"
8
)
9

10
var Fs FileSystem = osFS{}
11

12
// osFS implements fileSystem using the local disk.
13
type osFS struct{}
14

15
func (osFS) OpenFile(name string, flag int, perm os.FileMode) (*os.File, error) {
16
	return os.OpenFile(name, flag, perm)
17
}
18
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
19

20
func (osFS) Remove(name string) error {
21
	return os.Remove(name)
22
}
23

24
type FileSystem interface {
25
	OpenFile(name string, flag int, perm os.FileMode) (*os.File, error)
26
	Stat(name string) (os.FileInfo, error)
27
	Remove(name string) error
28
}
29

30
func createLoggerFile(filePath, fileName string) (*os.File, error) {
31
	_, err := Fs.Stat(filePath)
32
	if err != nil {
33
		if errors.Is(err, fs.ErrNotExist) {
34
			err = os.Mkdir(filePath, os.FileMode(0755))
35
			if err != nil {
36
				return &os.File{}, err
37
			}
38
		} else {
39
			return &os.File{}, err
40
		}
41
	}
42

43
	fullPath := filepath.Join(filePath, fileName)
44

45
	f, err := Fs.OpenFile(fullPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755)
46
	if err != nil {
47
		return &os.File{}, err
48
	}
49

50
	return f, nil
51
}
52

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.