package osutil import ( "fmt" "os" "strings" "time" ) const tmpl = "%v - %v: " type LoggerService struct { DateFormat string Utc bool file *os.File log bool } func NewLogger() *LoggerService { l := LoggerService{} l.DateFormat = time.RFC3339Nano l.Utc = true return &l } func (l *LoggerService) Start() { l.log = true } func (l *LoggerService) Stop() { l.log = false } func (l *LoggerService) Info(format string, params ...interface{}) { format = tmpl + format params = append([]interface{}{l.formattedTime(), "I"}, params...) fmt.Fprintf(os.Stdout, formatNewLine(format), params...) } func (l *LoggerService) formattedTime() string { t := time.Now() if l.Utc { t = t.UTC() } return t.Format(l.DateFormat) } func formatNewLine(format string) string { s := strings.Replace(format, "\n", " ", -1) s = strings.TrimSpace(s) return s + "\n" }