2017-03-08 20:08:44 +01:00
|
|
|
package filelog
|
|
|
|
|
|
|
|
import (
|
2017-03-11 21:51:08 +01:00
|
|
|
"fmt"
|
2017-04-15 09:46:39 +02:00
|
|
|
"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
|
2018-11-29 22:20:57 +01:00
|
|
|
func NewFileLogger(logPath string) Logger {
|
2017-03-08 20:08:44 +01:00
|
|
|
return Logger{
|
2018-11-29 22:20:57 +01:00
|
|
|
logPath: logPath,
|
2017-03-08 20:08:44 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-09-11 19:51:29 +02:00
|
|
|
// LogMessageForUser log in file
|
2017-04-14 17:43:12 +02:00
|
|
|
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 {
|
2017-03-10 18:09:13 +01:00
|
|
|
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 {
|
2017-03-10 18:09:13 +01:00
|
|
|
return err
|
2017-03-08 20:08:44 +01:00
|
|
|
}
|
|
|
|
defer file.Close()
|
|
|
|
|
2017-04-14 17:43:12 +02:00
|
|
|
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 {
|
2017-03-10 18:09:13 +01:00
|
|
|
return err
|
2017-03-08 20:08:44 +01:00
|
|
|
}
|
2017-03-10 18:09:13 +01:00
|
|
|
return nil
|
2017-03-11 11:06:50 +01:00
|
|
|
}
|