twin-api/base/global/logFile.go

53 lines
1.0 KiB
Go

package global
import (
"fmt"
"path/filepath"
"strings"
log "github.com/sirupsen/logrus"
)
type LogFile struct {
log.TextFormatter
}
const (
red = "38;2;255;0;0"
yellow = "38;2;255;165;0"
gray = "38;2;100;100;100"
def = "38;2;100;150;200"
green = "38;2;85;107;47"
// red = "31"
// yellow = "33"
// gray = "37"
// def = "36"
)
func (f *LogFile) Format(entry *log.Entry) ([]byte, error) {
var levelColor string
switch entry.Level {
case log.DebugLevel, log.TraceLevel:
levelColor = green
case log.WarnLevel:
levelColor = yellow
case log.ErrorLevel, log.FatalLevel, log.PanicLevel:
levelColor = red
case log.InfoLevel:
levelColor = def
default:
levelColor = def
}
funcs := strings.SplitN(entry.Caller.Function, ".", 2)
msg := fmt.Sprintf("\033[%sm[%s] [%s] [%s:%d] %s\033[0m \n",
levelColor,
entry.Time.Format("2006-01-02 15:04:05,000"),
strings.ToUpper(entry.Level.String()),
funcs[0]+"/"+filepath.Base(entry.Caller.File),
entry.Caller.Line,
entry.Message)
return []byte(msg), nil
}