config.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package config
  2. import (
  3. "fmt"
  4. "gopkg.in/ini.v1"
  5. "os"
  6. "path/filepath"
  7. "strings"
  8. )
  9. type AgentConfig struct {
  10. ServerConfig `ini:"server"`
  11. LogConfig `ini:"log"`
  12. ResourceConfig `ini:"resource"`
  13. }
  14. type ServerConfig struct {
  15. ConfigServer string `ini:"ConfigServer"`
  16. DataServer string `ini:"DataServer"`
  17. License string `ini:"License"`
  18. }
  19. type ResourceConfig struct {
  20. ResourceMaxProcs int `ini:"resource.maxProcs"`
  21. }
  22. type LogConfig struct {
  23. LogLevel string `ini:"log.level"`
  24. LogPath string `ini:"log.path"`
  25. LogFileSize int `ini:"log.fileSize"`
  26. LogReserveDay int `ini:"log.reserveDay"`
  27. LogMaxReserveOneday int `ini:"log.maxReserveOneday"`
  28. }
  29. func getCurrentDirectory() (string, error) {
  30. dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
  31. return strings.Replace(dir, "\\", "/", -1), err
  32. }
  33. func LoadConfig() (*AgentConfig, error) {
  34. agentDir, err := getCurrentDirectory()
  35. if err != nil {
  36. return nil, err
  37. }
  38. fmt.Printf("Agent current directory=%s\r\n", agentDir) // Agent current directory=/data/ilucky/cloudwise/euspace
  39. agentConfigPath := agentDir + "/" + "euspace.conf"
  40. agentConfigFile, err := ini.Load(agentConfigPath)
  41. if err != nil {
  42. return nil, err
  43. }
  44. //sections := configFile.Sections()
  45. //for _, section := range sections {
  46. // keys := section.Keys()
  47. // if "" == section.Name() {
  48. // for _, key := range keys {
  49. // keyName := key.Name()
  50. // keyValue := key.Value()
  51. // fmt.Printf("Key: %s, Value: %s\r\n", keyName, keyValue)
  52. // }
  53. // }
  54. //}
  55. agentConfig := new(AgentConfig) // new出来的对象需要使用*
  56. err = agentConfigFile.MapTo(agentConfig)
  57. if err != nil {
  58. return agentConfig, err
  59. }
  60. return agentConfig, nil
  61. }