logger.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "io"
  4. "log"
  5. "os"
  6. "time"
  7. "GoEthemineTelegramBot/botsettings"
  8. )
  9. type customLogWriter struct {
  10. Writer io.Writer
  11. }
  12. // Initializes Loggers
  13. func LoggersInit() {
  14. fullLogPath := botsettings.FullLogPath()
  15. errorLogPath := botsettings.ErrorLogPath()
  16. fullLog, err := os.OpenFile(fullLogPath, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0766)
  17. if err != nil {
  18. log.Panic(err)
  19. }
  20. // Prints log to os.Stdout, fullLog,
  21. fullLogWriter := &customLogWriter{io.MultiWriter(os.Stdout, fullLog)}
  22. errLog, err := os.OpenFile(errorLogPath, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0766)
  23. if err != nil {
  24. log.Panic(err)
  25. }
  26. // Prints log to os.Stdout, fullLog, errLog
  27. errLogWriter := &customLogWriter{io.MultiWriter(os.Stdout, fullLog, errLog)}
  28. LogInfo = log.New(fullLogWriter, "INFO\t", 0)
  29. LogWarn = log.New(fullLogWriter, "WARNING\t", 0)
  30. LogError = log.New(errLogWriter, "ERROR\t", log.Lshortfile)
  31. LogDebug = log.New(fullLogWriter, "DEBUG\t", log.Lshortfile)
  32. }
  33. // Passes message to writer with added current time
  34. func (writer customLogWriter) Write(message []byte) (int, error) {
  35. bytes := append([]byte(time.Now().Format("[01-02-2006 15:04:05] "))[:], message...)
  36. n, err := writer.Writer.Write(bytes)
  37. if err != nil {
  38. return n, err
  39. }
  40. if n != len(bytes) {
  41. return n, io.ErrShortWrite
  42. }
  43. return len(bytes), nil
  44. }