/
config.go
63 lines (49 loc) · 1.4 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package main
import (
"strings"
"time"
"github.com/spf13/viper"
"go.uber.org/zap"
)
const (
delimiter = "."
// contracts scripthash
cfgNeoFSContract = "contracts.neofs"
// neo rpc node related config values
prefix = "chain"
cfgChainFSChain = "chain.fschain"
cfgNeoRPCEndpoint = "rpc.endpoint"
cfgNeoRPCDialTimeout = "rpc.dial_timeout"
cfgNeoRPCRecheckInterval = "rpc.health_recheck_interval"
// monitor prometheus expose config values
cfgMetricsEndpoint = "metrics.endpoint"
cfgMetricsInterval = "metrics.interval"
// level of logging
cfgLoggerLevel = "logger.level"
)
func DefaultConfiguration(cfg *viper.Viper) {
cfg.SetDefault(prefix+delimiter+cfgNeoRPCEndpoint, "")
cfg.SetDefault(prefix+delimiter+cfgNeoRPCDialTimeout, 5*time.Second)
cfg.SetDefault(cfgMetricsEndpoint, ":16512")
cfg.SetDefault(cfgMetricsInterval, 15*time.Minute)
cfg.SetDefault(cfgLoggerLevel, "info")
}
func WithLevel(level string) zap.AtomicLevel {
return safeLevel(level)
}
func safeLevel(lvl string) zap.AtomicLevel {
switch strings.ToLower(lvl) {
case "debug":
return zap.NewAtomicLevelAt(zap.DebugLevel)
case "warn":
return zap.NewAtomicLevelAt(zap.WarnLevel)
case "error":
return zap.NewAtomicLevelAt(zap.ErrorLevel)
case "fatal":
return zap.NewAtomicLevelAt(zap.FatalLevel)
case "panic":
return zap.NewAtomicLevelAt(zap.PanicLevel)
default:
return zap.NewAtomicLevelAt(zap.InfoLevel)
}
}