Logger.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package Logger
  2. import (
  3. "fmt"
  4. "path/filepath"
  5. "path"
  6. "gopkg.in/natefinch/lumberjack.v2"
  7. "time"
  8. "git.swzry.com/NSMCServerLauncher/Utils"
  9. )
  10. type LogFileWriter struct{
  11. lumberjackLogger lumberjack.Logger
  12. withTime bool
  13. prefix string
  14. enable bool
  15. time_format_string string
  16. }
  17. func (this *LogFileWriter) Write(data []byte) (int, error) {
  18. if(this.enable){
  19. if(this.withTime){
  20. this.lumberjackLogger.Write([]byte(fmt.Sprintf("[%s]%s",time.Now().Format(this.time_format_string),this.prefix)))
  21. }else {
  22. if this.prefix != ""{
  23. this.lumberjackLogger.Write([]byte(this.prefix))
  24. }
  25. }
  26. return this.lumberjackLogger.Write(data)
  27. }else {
  28. return len(data),nil
  29. }
  30. }
  31. var Log TypeOfLoggerSystem
  32. type TypeOfLoggerSystem struct {
  33. SysDebug LogFileWriter
  34. SysInfo LogFileWriter
  35. SysWarning LogFileWriter
  36. SysCritical LogFileWriter
  37. SysFatal LogFileWriter
  38. MCLOut LogFileWriter
  39. MCLErr LogFileWriter
  40. SSH LogFileWriter
  41. }
  42. func InitLogger() error {
  43. logdir,err := filepath.Abs(LoggerConf.logdir)
  44. if err != nil {
  45. fmt.Println("[StdOutLog][Fatal Error] Failed Get Log Dir: ",err)
  46. return err
  47. }
  48. if err := Utils.MkDirIfNotExist(logdir); err != nil {return err}
  49. syslbj := lumberjack.Logger{
  50. Filename: path.Join(LoggerConf.logdir,LoggerConf.syslogcfg.Filename),
  51. MaxSize: LoggerConf.syslogcfg.MaxSize,
  52. MaxAge: LoggerConf.syslogcfg.MaxAge,
  53. MaxBackups: LoggerConf.syslogcfg.MaxBackups,
  54. LocalTime: LoggerConf.syslogcfg.LocalTime,
  55. Compress: LoggerConf.syslogcfg.Compress,
  56. }
  57. mcoutlbj := lumberjack.Logger{
  58. Filename: path.Join(LoggerConf.logdir,LoggerConf.mcloutlogcfg.Filename),
  59. MaxSize: LoggerConf.mcloutlogcfg.MaxSize,
  60. MaxAge: LoggerConf.mcloutlogcfg.MaxAge,
  61. MaxBackups: LoggerConf.mcloutlogcfg.MaxBackups,
  62. LocalTime: LoggerConf.mcloutlogcfg.LocalTime,
  63. Compress: LoggerConf.mcloutlogcfg.Compress,
  64. }
  65. mcerrlbj := lumberjack.Logger{
  66. Filename: path.Join(LoggerConf.logdir,LoggerConf.mclerrlogcfg.Filename),
  67. MaxSize: LoggerConf.mclerrlogcfg.MaxSize,
  68. MaxAge: LoggerConf.mclerrlogcfg.MaxAge,
  69. MaxBackups: LoggerConf.mclerrlogcfg.MaxBackups,
  70. LocalTime: LoggerConf.mclerrlogcfg.LocalTime,
  71. Compress: LoggerConf.mclerrlogcfg.Compress,
  72. }
  73. sshlbj := lumberjack.Logger{
  74. Filename: path.Join(LoggerConf.logdir,LoggerConf.sshlogcfg.Filename),
  75. MaxSize: LoggerConf.sshlogcfg.MaxSize,
  76. MaxAge: LoggerConf.sshlogcfg.MaxAge,
  77. MaxBackups: LoggerConf.sshlogcfg.MaxBackups,
  78. LocalTime: LoggerConf.sshlogcfg.LocalTime,
  79. Compress: LoggerConf.sshlogcfg.Compress,
  80. }
  81. Log = TypeOfLoggerSystem{
  82. SysCritical: LogFileWriter{
  83. lumberjackLogger:syslbj,
  84. enable:true,
  85. prefix:"<CRITICAL>",
  86. withTime: true,
  87. time_format_string:LoggerConf.time_format,
  88. },
  89. SysFatal: LogFileWriter{
  90. lumberjackLogger:syslbj,
  91. enable:true,
  92. prefix:"<FATAL>",
  93. withTime: true,
  94. time_format_string:LoggerConf.time_format,
  95. },
  96. SysInfo: LogFileWriter{
  97. lumberjackLogger:syslbj,
  98. enable:true,
  99. prefix:"<INFO>",
  100. withTime: true,
  101. time_format_string:LoggerConf.time_format,
  102. },
  103. SysWarning: LogFileWriter{
  104. lumberjackLogger:syslbj,
  105. enable:true,
  106. prefix:"<WARNING>",
  107. withTime: true,
  108. time_format_string:LoggerConf.time_format,
  109. },
  110. SysDebug: LogFileWriter{
  111. lumberjackLogger:syslbj,
  112. enable:LoggerConf.debug_log,
  113. prefix:"<DEBUG>",
  114. withTime: true,
  115. time_format_string:LoggerConf.time_format,
  116. },
  117. MCLOut: LogFileWriter{
  118. lumberjackLogger:mcoutlbj,
  119. enable:true,
  120. prefix:"",
  121. withTime: false,
  122. time_format_string:LoggerConf.time_format,
  123. },
  124. MCLErr: LogFileWriter{
  125. lumberjackLogger:mcerrlbj,
  126. enable:true,
  127. prefix:"",
  128. withTime: false,
  129. time_format_string:LoggerConf.time_format,
  130. },
  131. SSH: LogFileWriter{
  132. lumberjackLogger:sshlbj,
  133. enable:true,
  134. prefix:"",
  135. withTime: true,
  136. time_format_string:LoggerConf.time_format,
  137. },
  138. }
  139. return nil
  140. }