go_goutils/logging/funcs_file.go
2021-02-26 20:27:35 -05:00

177 lines
2.4 KiB
Go

package logging
import (
`fmt`
`io`
`log`
`os`
)
func (l *FileLogger) Setup() {
var err error
l.Logger = log.Default()
l.Logger.SetPrefix(l.Prefix)
if l.writer, err = os.OpenFile(l.Path, appendFlags, logPerm); err != nil {
log.Panicf("could not open log file \"%v\" for writing: %v\n", l.Path, err)
}
// https://stackoverflow.com/a/36719588/733214
multi := io.MultiWriter(os.Stdout, l.writer)
l.Logger.SetOutput(multi)
}
func (l *FileLogger) Shutdown() {
var err error
if err = l.writer.Close(); err != nil {
log.Panicf("could not close log file \"%v\": %v\n", l.Path, err)
}
}
func (l *FileLogger) doDebug(d bool) {
l.EnableDebug = d
}
func (l *FileLogger) setPrefix(prefix string) {
l.Prefix = prefix
l.Logger.SetPrefix(prefix)
}
func (l *FileLogger) Alert(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "ALERT")
return
}
func (l *FileLogger) Crit(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "CRITICAL")
return
}
func (l *FileLogger) Debug(s string, v ...interface{}) (err error) {
if !l.EnableDebug {
return
}
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "DEBUG")
return
}
func (l *FileLogger) Emerg(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "EMERGENCY")
return
}
func (l *FileLogger) Err(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "ERROR")
return
}
func (l *FileLogger) Info(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "INFO")
return
}
func (l *FileLogger) Notice(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "NOTICE")
return
}
func (l *FileLogger) Warning(s string, v ...interface{}) (err error) {
var msg string
if v != nil {
msg = fmt.Sprintf(s, v...)
} else {
msg = s
}
l.renderWrite(msg, "WARNING")
return
}
func (l *FileLogger) renderWrite(msg, prio string) {
s := fmt.Sprintf("[%v] %v", prio, msg)
l.Logger.Println(s)
return
}