41 lines
874 B
Go
41 lines
874 B
Go
|
package logging
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"os"
|
|||
|
"strings"
|
|||
|
)
|
|||
|
|
|||
|
type CustomFormatter struct{}
|
|||
|
|
|||
|
func (f *CustomFormatter) Format(rec *Record) string {
|
|||
|
paths := strings.Split(rec.Filename, string(os.PathSeparator))
|
|||
|
// does even anyone uses root folder as their gopath?
|
|||
|
filePath := strings.Join(paths[len(paths)-2:], string(os.PathSeparator))
|
|||
|
|
|||
|
return fmt.Sprintf("%-24s %-8s [%-15s][PID:%d][%s:%d] %s",
|
|||
|
rec.Time.UTC().Format("2006-01-02T15:04:05.999Z"),
|
|||
|
LevelNames[rec.Level],
|
|||
|
rec.LoggerName,
|
|||
|
rec.ProcessID,
|
|||
|
filePath,
|
|||
|
rec.Line,
|
|||
|
fmt.Sprintf(rec.Format, rec.Args...),
|
|||
|
)
|
|||
|
}
|
|||
|
|
|||
|
func NewCustom(name string, debug bool) Logger {
|
|||
|
log := NewLogger(name)
|
|||
|
logHandler := NewWriterHandler(os.Stderr)
|
|||
|
logHandler.Formatter = &CustomFormatter{}
|
|||
|
logHandler.Colorize = true
|
|||
|
log.SetHandler(logHandler)
|
|||
|
|
|||
|
if debug {
|
|||
|
log.SetLevel(DEBUG)
|
|||
|
logHandler.SetLevel(DEBUG)
|
|||
|
}
|
|||
|
|
|||
|
return log
|
|||
|
}
|