Refactor logger (#1185)
* refactor: logger * refactor: logging * refactor: rename func * refactor: logging * refactor: logging format
This commit is contained in:
101
util/logutil.go
101
util/logutil.go
@@ -1,101 +0,0 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
|
||||
"github.com/k0kubun/pp"
|
||||
"github.com/rifflock/lfshook"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/future-architect/vuls/config"
|
||||
formatter "github.com/kotakanbe/logrus-prefixed-formatter"
|
||||
)
|
||||
|
||||
// Log for localhost
|
||||
var Log *logrus.Entry
|
||||
|
||||
func init() {
|
||||
log := logrus.New()
|
||||
log.Out = ioutil.Discard
|
||||
fields := logrus.Fields{"prefix": ""}
|
||||
Log = log.WithFields(fields)
|
||||
}
|
||||
|
||||
// NewCustomLogger creates logrus
|
||||
func NewCustomLogger(server config.ServerInfo) *logrus.Entry {
|
||||
log := logrus.New()
|
||||
log.Formatter = &formatter.TextFormatter{MsgAnsiColor: server.LogMsgAnsiColor}
|
||||
log.Level = logrus.InfoLevel
|
||||
if config.Conf.Debug {
|
||||
log.Level = logrus.DebugLevel
|
||||
pp.ColoringEnabled = false
|
||||
}
|
||||
|
||||
if flag.Lookup("test.v") != nil {
|
||||
return logrus.NewEntry(log)
|
||||
}
|
||||
|
||||
// File output
|
||||
logDir := GetDefaultLogDir()
|
||||
if 0 < len(config.Conf.LogDir) {
|
||||
logDir = config.Conf.LogDir
|
||||
}
|
||||
|
||||
// Only log to a file if quiet mode enabled
|
||||
if config.Conf.Quiet && flag.Lookup("test.v") == nil {
|
||||
if _, err := os.Stat(logDir); os.IsNotExist(err) {
|
||||
if err := os.Mkdir(logDir, 0700); err != nil {
|
||||
log.Errorf("Failed to create log directory. path: %s, err: %s", logDir, err)
|
||||
}
|
||||
}
|
||||
|
||||
logFile := logDir + "/vuls.log"
|
||||
if file, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644); err == nil {
|
||||
log.Out = file
|
||||
} else {
|
||||
log.Out = os.Stderr
|
||||
log.Errorf("Failed to create log file. path: %s, err: %s", logFile, err)
|
||||
}
|
||||
} else {
|
||||
log.Out = os.Stderr
|
||||
}
|
||||
|
||||
whereami := "localhost"
|
||||
if 0 < len(server.ServerName) {
|
||||
whereami = server.GetServerName()
|
||||
}
|
||||
|
||||
if _, err := os.Stat(logDir); err == nil {
|
||||
path := filepath.Join(logDir, fmt.Sprintf("%s.log", whereami))
|
||||
if _, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644); err == nil {
|
||||
log.Hooks.Add(lfshook.NewHook(lfshook.PathMap{
|
||||
logrus.DebugLevel: path,
|
||||
logrus.InfoLevel: path,
|
||||
logrus.WarnLevel: path,
|
||||
logrus.ErrorLevel: path,
|
||||
logrus.FatalLevel: path,
|
||||
logrus.PanicLevel: path,
|
||||
}, nil))
|
||||
} else {
|
||||
log.Errorf("Failed to create log file. path: %s, err: %s", path, err)
|
||||
}
|
||||
}
|
||||
|
||||
entry := log.WithFields(logrus.Fields{"prefix": whereami})
|
||||
entry.Infof("vuls-%s-%s", config.Version, config.Revision)
|
||||
return entry
|
||||
}
|
||||
|
||||
// GetDefaultLogDir returns default log directory
|
||||
func GetDefaultLogDir() string {
|
||||
defaultLogDir := "/var/log/vuls"
|
||||
if runtime.GOOS == "windows" {
|
||||
defaultLogDir = filepath.Join(os.Getenv("APPDATA"), "vuls")
|
||||
}
|
||||
return defaultLogDir
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/future-architect/vuls/config"
|
||||
"github.com/future-architect/vuls/logging"
|
||||
)
|
||||
|
||||
// GenWorkers generates goroutine
|
||||
@@ -18,8 +19,7 @@ func GenWorkers(num int) chan<- func() {
|
||||
go func() {
|
||||
defer func() {
|
||||
if p := recover(); p != nil {
|
||||
log := NewCustomLogger(config.ServerInfo{})
|
||||
log.Errorf("run time panic: %v", p)
|
||||
logging.Log.Errorf("run time panic: %+v", p)
|
||||
}
|
||||
}()
|
||||
for f := range tasks {
|
||||
|
||||
@@ -69,7 +69,7 @@ func TestUrlJoin(t *testing.T) {
|
||||
paths := tt.in[1:]
|
||||
actual, err := URLPathJoin(baseurl, paths...)
|
||||
if err != nil {
|
||||
t.Errorf("\nunexpected error occurred, err: %s,\ninput:%#v\nexpected: %s\n actual: %s", err, tt.in, tt.out, actual)
|
||||
t.Errorf("\nunexpected error occurred, err: %+v,\ninput:%#v\nexpected: %s\n actual: %s", err, tt.in, tt.out, actual)
|
||||
}
|
||||
if actual != tt.out {
|
||||
t.Errorf("\ninput:%#v\nexpected: %s\n actual: %s", tt.in, tt.out, actual)
|
||||
|
||||
Reference in New Issue
Block a user