log_old.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package loger
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "path/filepath"
  7. "runtime"
  8. "github.com/IceWhaleTech/CasaOS/pkg/config"
  9. file2 "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
  10. )
  11. //定义一个int的别名
  12. type Level int
  13. type OLog interface {
  14. Debug(v ...interface{})
  15. Info(v ...interface{})
  16. Warn(v ...interface{})
  17. Error(v ...interface{})
  18. Fatal(v ...interface{})
  19. Path() string
  20. }
  21. type oLog struct {
  22. }
  23. var (
  24. F *os.File
  25. DefaultPrefix = ""
  26. DefaultCallerDepth = 2
  27. logger *log.Logger
  28. logPrefix = ""
  29. levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
  30. )
  31. //iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
  32. const (
  33. DEBUG Level = iota
  34. INFO
  35. WARN
  36. ERROR
  37. FATAL
  38. )
  39. //日志初始化
  40. func LogSetupOld() {
  41. var err error
  42. filePath := fmt.Sprintf("%s", config.AppInfo.LogPath)
  43. fileName := fmt.Sprintf("%s.%s",
  44. config.AppInfo.LogSaveName,
  45. config.AppInfo.LogFileExt,
  46. )
  47. F, err = file2.MustOpen(fileName, filePath)
  48. if err != nil {
  49. log.Fatalf("logging.Setup err: %v", err)
  50. }
  51. logger = log.New(F, DefaultPrefix, log.LstdFlags)
  52. }
  53. func (o *oLog) Path() string {
  54. filePath := fmt.Sprintf("%s", config.AppInfo.LogPath)
  55. fileName := fmt.Sprintf("%s.%s",
  56. config.AppInfo.LogSaveName,
  57. config.AppInfo.LogFileExt,
  58. )
  59. return filePath + fileName
  60. }
  61. func (o *oLog) Debug(v ...interface{}) {
  62. setPrefix(DEBUG)
  63. logger.Println(v)
  64. }
  65. func (o *oLog) Info(v ...interface{}) {
  66. setPrefix(INFO)
  67. logger.Println(v)
  68. }
  69. func (o *oLog) Warn(v ...interface{}) {
  70. setPrefix(WARN)
  71. logger.Println(v)
  72. }
  73. func (o *oLog) Error(v ...interface{}) {
  74. setPrefix(ERROR)
  75. logger.Println(v)
  76. }
  77. func (o *oLog) Fatal(v ...interface{}) {
  78. setPrefix(FATAL)
  79. logger.Println(v)
  80. }
  81. func setPrefix(level Level) {
  82. _, file, line, ok := runtime.Caller(DefaultCallerDepth)
  83. if ok {
  84. logPrefix = fmt.Sprintf("[%s][%s:%d]", levelFlags[level], filepath.Base(file), line)
  85. } else {
  86. logPrefix = fmt.Sprintf("[%s]", levelFlags[level])
  87. }
  88. logger.SetPrefix(logPrefix)
  89. }
  90. func NewOLoger() OLog {
  91. return &oLog{}
  92. }