Progress on deb and rpm packaging, renamed config files, added file logging, #1476

This commit is contained in:
Torkel Ödegaard
2015-03-03 10:18:24 +01:00
parent f5cd3d853d
commit 7e0f1a57af
18 changed files with 446 additions and 202 deletions

View File

@@ -0,0 +1,6 @@
2015/03/03 09:52:42 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER
2015/03/03 09:59:43 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER
2015/03/03 10:03:13 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER
2015/03/03 10:09:13 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER
2015/03/03 10:09:34 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER
2015/03/03 10:15:20 [I] Setting: ENV override found: GF_SECURITY_ADMIN_USER

View File

@@ -94,6 +94,8 @@ var (
// PhantomJs Rendering
ImagesDir string
PhantomDir string
configFiles []string
)
func init() {
@@ -102,30 +104,32 @@ func init() {
WorkDir, _ = filepath.Abs(".")
}
func findConfigFiles() []string {
func findConfigFiles(customConfigFile string) {
ConfRootPath = path.Join(WorkDir, "conf")
filenames := make([]string, 0)
configFiles = make([]string, 0)
configFile := path.Join(ConfRootPath, "grafana.ini")
configFile := path.Join(ConfRootPath, "defaults.ini")
if com.IsFile(configFile) {
filenames = append(filenames, configFile)
configFiles = append(configFiles, configFile)
}
configFile = path.Join(ConfRootPath, "grafana.dev.ini")
configFile = path.Join(ConfRootPath, "dev.ini")
if com.IsFile(configFile) {
filenames = append(filenames, configFile)
configFiles = append(configFiles, configFile)
}
configFile = path.Join(ConfRootPath, "grafana.custom.ini")
configFile = path.Join(ConfRootPath, "custom.ini")
if com.IsFile(configFile) {
filenames = append(filenames, configFile)
configFiles = append(configFiles, configFile)
}
if len(filenames) == 0 {
if customConfigFile != "" {
configFiles = append(configFiles, customConfigFile)
}
if len(configFiles) == 0 {
log.Fatal(3, "Could not find any config file")
}
return filenames
}
func parseAppUrlAndSubUrl(section *ini.Section) (string, string) {
@@ -165,11 +169,7 @@ func loadEnvVariableOverrides() {
}
func NewConfigContext(config string) {
configFiles := findConfigFiles()
if config != "" {
configFiles = append(configFiles, config)
}
findConfigFiles(config)
var err error
@@ -186,6 +186,7 @@ func NewConfigContext(config string) {
}
loadEnvVariableOverrides()
initLogging()
AppName = Cfg.Section("").Key("app_name").MustString("Grafana")
Env = Cfg.Section("").Key("app_mode").MustString("development")
@@ -233,8 +234,6 @@ func NewConfigContext(config string) {
ImagesDir = "data/png"
PhantomDir = "vendor/phantomjs"
LogRootPath = Cfg.Section("log").Key("root_path").MustString(path.Join(WorkDir, "/data/log"))
readSessionConfig()
}
@@ -253,3 +252,76 @@ func readSessionConfig() {
os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm)
}
}
var logLevels = map[string]string{
"Trace": "0",
"Debug": "1",
"Info": "2",
"Warn": "3",
"Error": "4",
"Critical": "5",
}
func initLogging() {
// Get and check log mode.
LogModes = strings.Split(Cfg.Section("log").Key("mode").MustString("console"), ",")
LogRootPath = Cfg.Section("log").Key("root_path").MustString(path.Join(WorkDir, "/data/log"))
LogConfigs = make([]string, len(LogModes))
for i, mode := range LogModes {
mode = strings.TrimSpace(mode)
sec, err := Cfg.GetSection("log." + mode)
if err != nil {
log.Fatal(4, "Unknown log mode: %s", mode)
}
// Log level.
levelName := Cfg.Section("log."+mode).Key("level").In("Trace",
[]string{"Trace", "Debug", "Info", "Warn", "Error", "Critical"})
level, ok := logLevels[levelName]
if !ok {
log.Fatal(4, "Unknown log level: %s", levelName)
}
// Generate log configuration.
switch mode {
case "console":
LogConfigs[i] = fmt.Sprintf(`{"level":%s}`, level)
case "file":
logPath := sec.Key("file_name").MustString(path.Join(LogRootPath, "grafana.log"))
os.MkdirAll(path.Dir(logPath), os.ModePerm)
LogConfigs[i] = fmt.Sprintf(
`{"level":%s,"filename":"%s","rotate":%v,"maxlines":%d,"maxsize":%d,"daily":%v,"maxdays":%d}`, level,
logPath,
sec.Key("log_rotate").MustBool(true),
sec.Key("max_lines").MustInt(1000000),
1<<uint(sec.Key("max_size_shift").MustInt(28)),
sec.Key("daily_rotate").MustBool(true),
sec.Key("max_days").MustInt(7))
case "conn":
LogConfigs[i] = fmt.Sprintf(`{"level":%s,"reconnectOnMsg":%v,"reconnect":%v,"net":"%s","addr":"%s"}`, level,
sec.Key("reconnect_on_msg").MustBool(),
sec.Key("reconnect").MustBool(),
sec.Key("protocol").In("tcp", []string{"tcp", "unix", "udp"}),
sec.Key("addr").MustString(":7020"))
case "smtp":
LogConfigs[i] = fmt.Sprintf(`{"level":%s,"username":"%s","password":"%s","host":"%s","sendTos":"%s","subject":"%s"}`, level,
sec.Key("user").MustString("example@example.com"),
sec.Key("passwd").MustString("******"),
sec.Key("host").MustString("127.0.0.1:25"),
sec.Key("receivers").MustString("[]"),
sec.Key("subject").MustString("Diagnostic message from serve"))
case "database":
LogConfigs[i] = fmt.Sprintf(`{"level":%s,"driver":"%s","conn":"%s"}`, level,
sec.Key("driver").String(),
sec.Key("conn").String())
}
log.NewLogger(Cfg.Section("log").Key("buffer_len").MustInt64(10000), mode, LogConfigs[i])
}
}
func LogLoadedConfigFiles() {
for _, file := range configFiles {
log.Info("Config: Loaded from %s", file)
}
}