logger.go 1.3 KB

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