2021-06-03 19:36:48 +09:30
|
|
|
package log
|
|
|
|
|
|
|
|
import (
|
2021-10-06 23:12:43 +10:30
|
|
|
"log"
|
2021-06-03 19:36:48 +09:30
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type LogEntryType string
|
|
|
|
|
|
|
|
type LogEntry struct {
|
|
|
|
Timestamp time.Time `json:"ts"`
|
|
|
|
Type LogEntryType `json:"type"`
|
|
|
|
Entry string `json:"log"`
|
|
|
|
}
|
|
|
|
|
|
|
|
const (
|
|
|
|
LogTypeInfo = "info"
|
|
|
|
LogTypeError = "error"
|
|
|
|
LogTypeDebug = "debug"
|
|
|
|
)
|
|
|
|
|
|
|
|
var LogEntries []LogEntry
|
|
|
|
var logInput chan LogEntry
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
// wait for log entries
|
|
|
|
logInput = make(chan LogEntry)
|
|
|
|
go func() {
|
|
|
|
for {
|
|
|
|
aLog := <-logInput
|
|
|
|
LogEntries = append(LogEntries, aLog)
|
2021-06-03 19:40:53 +09:30
|
|
|
for len(LogEntries) > 100 {
|
|
|
|
LogEntries = LogEntries[1:]
|
|
|
|
}
|
2021-06-03 19:36:48 +09:30
|
|
|
}
|
|
|
|
}()
|
|
|
|
}
|
|
|
|
|
|
|
|
func SendLog(entry string, entryType LogEntryType) {
|
|
|
|
logInput <- LogEntry{
|
|
|
|
Timestamp: time.Now(),
|
|
|
|
Entry: entry,
|
|
|
|
Type: entryType,
|
|
|
|
}
|
2021-10-11 20:25:20 +10:30
|
|
|
log.Printf("%6s: %s", entryType, entry)
|
2021-06-03 19:36:48 +09:30
|
|
|
}
|