config.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package config
  2. import (
  3. "errors"
  4. "io"
  5. "io/ioutil"
  6. "log"
  7. "os"
  8. "strings"
  9. _c "source.uit.com/mikevoets/inf-3200-1/config"
  10. )
  11. type LogPrefix string
  12. type LogLevel int
  13. type LogHandle io.Writer
  14. type LogFlag int
  15. var (
  16. Trace *log.Logger
  17. Info *log.Logger
  18. Warning *log.Logger
  19. Error *log.Logger
  20. Panic *log.Logger
  21. )
  22. var (
  23. DISCARD_HANDLE LogHandle = ioutil.Discard
  24. HANDLE_TRACE LogHandle = os.Stdout
  25. HANDLE_INFO LogHandle = os.Stdout
  26. HANDLE_WARNING LogHandle = os.Stdout
  27. HANDLE_ERROR LogHandle = os.Stderr
  28. HANDLE_PANIC LogHandle = os.Stderr
  29. LOG_DIR = _c.TmpDir + string(os.PathSeparator) + "logs"
  30. FILE_EXTRA string = ""
  31. LOG_FORMAT = log.Ldate | log.Lmicroseconds
  32. )
  33. const (
  34. FILE_MASK = os.O_CREATE | os.O_WRONLY | os.O_APPEND
  35. FILE_PERM = 0666
  36. )
  37. const (
  38. PREFIX_TRACE LogPrefix = "TRACE"
  39. PREFIX_INFO LogPrefix = "INFO"
  40. PREFIX_WARNING LogPrefix = "WARNING"
  41. PREFIX_ERROR LogPrefix = "ERROR"
  42. PREFIX_PANIC LogPrefix = "PANIC"
  43. )
  44. const (
  45. TRACE LogLevel = 1<<iota | 0
  46. INFO LogLevel = 1<<iota | TRACE
  47. WARNING LogLevel = 1<<iota | INFO
  48. ERROR LogLevel = 1<<iota | WARNING
  49. PANIC LogLevel = 1<<iota | ERROR
  50. )
  51. var (
  52. LOG_LEVEL_OUTPUT LogLevel = INFO
  53. LOG_LEVEL_FILE LogLevel = WARNING
  54. )
  55. func (c *LogLevel) Set(l string) error {
  56. l = strings.ToUpper(l)
  57. if l == "TRACE" {
  58. *c = TRACE
  59. } else if l == "INFO" {
  60. *c = INFO
  61. } else if l == "WARNING" {
  62. *c = WARNING
  63. } else if l == "ERROR" {
  64. *c = ERROR
  65. } else if l == "PANIC" {
  66. *c = PANIC
  67. } else {
  68. return errors.New("Unknown log level: TRACE|INFO|WARNING|ERROR|PANIC")
  69. }
  70. return nil
  71. }
  72. func (c *LogLevel) String() string {
  73. switch *c {
  74. case TRACE:
  75. return "TRACE"
  76. case INFO:
  77. return "INFO"
  78. case WARNING:
  79. return "WARNING"
  80. case ERROR:
  81. return "ERROR"
  82. default:
  83. return "PANIC"
  84. }
  85. }