config.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package config
  2. import (
  3. "io"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "strings"
  8. "git.giaever.org/joachimmg/go-log.git/errors"
  9. )
  10. type LogPrefix string
  11. type LogLevel int
  12. type LogHandle io.Writer
  13. type LogFlag int
  14. type LogDir string
  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 LogDir = LogDir(os.TempDir() + string(os.PathSeparator) + "go-log")
  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.UNKNOWN_LEVEL
  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. }
  86. func (d *LogDir) Set(nd string) error {
  87. LOG_DIR = LogDir(nd)
  88. return nil
  89. }
  90. func (d *LogDir) String() string {
  91. return string(*d)
  92. }