Refactor logger (#1185)

* refactor: logger

* refactor: logging

* refactor: rename func

* refactor: logging

* refactor: logging format
This commit is contained in:
Kota Kanbe
2021-02-26 10:36:58 +09:00
committed by GitHub
parent 518f4dc039
commit 3f2ac45d71
58 changed files with 455 additions and 408 deletions

View File

@@ -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
}

View File

@@ -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 {

View File

@@ -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)