logger.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net"
  6. "net/http"
  7. "os"
  8. "path/filepath"
  9. "time"
  10. )
  11. func GetInfoFromRequest(r *http.Request) (string, string, string) {
  12. host, _, _ := net.SplitHostPort(r.RemoteAddr)
  13. searchPhrase := r.URL.Query().Get("phrase")
  14. language := r.URL.Query().Get("lang")
  15. if language == "" {
  16. language = "All languages"
  17. } else {
  18. language = app.Languages[language]
  19. }
  20. return host, searchPhrase, language
  21. }
  22. func WriteLog(logString string) error {
  23. logFile := filepath.Join("log", (time.Now().Format("200612") + ".log"))
  24. logOutput, err := os.OpenFile(logFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
  25. if err != nil {
  26. return err
  27. }
  28. defer logOutput.Close()
  29. _, err = logOutput.WriteString(logString)
  30. return err
  31. }
  32. func Logger(r *http.Request, resultsServed int) {
  33. host, searchPhrase, language := GetInfoFromRequest(r)
  34. timeFormat := "2006-01-02 15:04:05"
  35. var logString string
  36. if searchPhrase != "" {
  37. logString = fmt.Sprintf("%v,%v,\"%v\",\"%v\",%v\n", time.Now().Format(timeFormat), host, searchPhrase, language, resultsServed)
  38. } else {
  39. logString = fmt.Sprintf("%v,%v,TMS,\"%v\",%v\n", time.Now().Format(timeFormat), host, language, resultsServed)
  40. }
  41. err := WriteLog(logString)
  42. if err != nil {
  43. log.Fatalf("error writing log: %v", err)
  44. }
  45. }