justlog/filelog/userlog.go

44 lines
999 B
Go
Raw Normal View History

2017-03-08 20:08:44 +01:00
package filelog
import (
2017-03-11 21:51:08 +01:00
"fmt"
"os"
2017-09-11 19:51:29 +02:00
"github.com/gempir/go-twitch-irc"
2017-03-08 20:08:44 +01:00
)
2017-09-11 19:51:29 +02:00
// Logger logger struct
2017-03-08 20:08:44 +01:00
type Logger struct {
logPath string
}
2017-09-11 19:51:29 +02:00
// NewFileLogger create file logger
2017-09-13 21:12:11 +02:00
func NewFileLogger() Logger {
2017-03-08 20:08:44 +01:00
return Logger{
2017-09-13 21:12:11 +02:00
logPath: "/var/twitch_logs",
2017-03-08 20:08:44 +01:00
}
}
2017-09-11 19:51:29 +02:00
// LogMessageForUser log in file
func (l *Logger) LogMessageForUser(channel string, user twitch.User, message twitch.Message) error {
year := message.Time.Year()
month := message.Time.Month()
2017-09-11 19:51:29 +02:00
err := os.MkdirAll(fmt.Sprintf(l.logPath+"/%s/%d/%s/", channel, year, month), 0755)
2017-03-08 20:08:44 +01:00
if err != nil {
return err
2017-03-08 20:08:44 +01:00
}
2017-09-11 19:51:29 +02:00
filename := fmt.Sprintf(l.logPath+"/%s/%d/%s/%s.txt", channel, year, month, user.Username)
2017-03-08 20:08:44 +01:00
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0755)
if err != nil {
return err
2017-03-08 20:08:44 +01:00
}
defer file.Close()
contents := fmt.Sprintf("[%s] %s: %s\r\n", message.Time.Format("2006-01-2 15:04:05"), user.Username, message.Text)
2017-03-08 20:08:44 +01:00
if _, err = file.WriteString(contents); err != nil {
return err
2017-03-08 20:08:44 +01:00
}
return nil
2017-03-11 11:06:50 +01:00
}