moira

Форк
0
52 строки · 1.4 Кб
1
package logging
2

3
import (
4
	"fmt"
5
	"os"
6
	"path/filepath"
7

8
	goLogging "github.com/op/go-logging"
9
)
10

11
type (
12
	Level  = goLogging.Level
13
	Logger = goLogging.Logger
14
)
15

16
// ConfigureLog creates new logger based on github.com/op/go-logging package
17
func ConfigureLog(logFile, logLevel, module string) (*Logger, error) {
18
	log, err := goLogging.GetLogger(module)
19
	if err != nil {
20
		return nil, fmt.Errorf("Can't initialize logger: %s", err.Error())
21
	}
22
	level, err := goLogging.LogLevel(logLevel)
23
	if err != nil {
24
		level = goLogging.DEBUG
25
	}
26

27
	goLogging.SetFormatter(goLogging.MustStringFormatter("%{time:2006-01-02 15:04:05.000}\t%{module}\t%{level}\t%{message}"))
28
	logBackend, err := getLogBackend(logFile)
29
	if err != nil {
30
		return nil, err
31
	}
32
	logBackend.Color = false
33
	goLogging.SetBackend(logBackend)
34
	goLogging.SetLevel(level, module)
35
	return log, nil
36
}
37

38
func getLogBackend(logFileName string) (*goLogging.LogBackend, error) {
39
	if logFileName == "stdout" || logFileName == "" {
40
		return goLogging.NewLogBackend(os.Stdout, "", 0), nil
41
	}
42

43
	logDir := filepath.Dir(logFileName)
44
	if err := os.MkdirAll(logDir, 0755); err != nil {
45
		return nil, fmt.Errorf("Can't create log directories %s: %s", logDir, err.Error())
46
	}
47
	logFile, err := os.OpenFile(logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
48
	if err != nil {
49
		return nil, fmt.Errorf("Can't open log file %s: %s", logFileName, err.Error())
50
	}
51
	return goLogging.NewLogBackend(logFile, "", 0), nil
52
}
53

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

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

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

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