57 lines
1011 B
Go
57 lines
1011 B
Go
package moon
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
"strconv"
|
|
)
|
|
|
|
// ChatLog logs message to separate file, placed in basedir(Cfg.LogFile).
|
|
func ChatLog(chatid int64, text string) {
|
|
file := os.DevNull
|
|
|
|
if Cfg.LogFile != "" {
|
|
file = fmt.Sprintf("%s/%s", filepath.Dir(Cfg.LogFile), strconv.FormatInt(chatid, 10))
|
|
}
|
|
|
|
var (
|
|
isOpened = false
|
|
)
|
|
|
|
for _, l := range chatlogs {
|
|
if l.LogFilePath == file {
|
|
isOpened = true
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
if !isOpened {
|
|
// open log file
|
|
logFile, err := os.OpenFile(file, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0644)
|
|
|
|
if err != nil {
|
|
fmt.Printf("Unable to open log file %s: %s", file, err)
|
|
}
|
|
|
|
l := Chatlog{LogFilePath: file, File: logFile}
|
|
|
|
chatlogs = append(chatlogs, l)
|
|
}
|
|
|
|
for _, l := range chatlogs {
|
|
if l.LogFilePath == file {
|
|
log.SetOutput(l.File)
|
|
// optional: log date-time, filename, and line number
|
|
log.SetFlags(log.Lshortfile | log.LstdFlags)
|
|
log.Println(text)
|
|
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */
|