diff --git a/commands/configtest.go b/commands/configtest.go index ce5c14ec..8839f746 100644 --- a/commands/configtest.go +++ b/commands/configtest.go @@ -79,7 +79,6 @@ func (p *ConfigtestCmd) SetFlags(f *flag.FlagSet) { // Execute execute func (p *ConfigtestCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - // Setup Logger util.Log = util.NewCustomLogger(c.ServerInfo{}) if err := mkdirDotVuls(); err != nil { diff --git a/commands/report.go b/commands/report.go index 43b3a82d..c6dd9987 100644 --- a/commands/report.go +++ b/commands/report.go @@ -17,7 +17,6 @@ import ( "github.com/future-architect/vuls/util" "github.com/google/subcommands" "github.com/k0kubun/pp" - cvelog "github.com/kotakanbe/go-cve-dictionary/log" ) // ReportCmd is subcommand for reporting @@ -212,8 +211,6 @@ func (p *ReportCmd) SetFlags(f *flag.FlagSet) { // Execute execute func (p *ReportCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { util.Log = util.NewCustomLogger(c.ServerInfo{}) - cvelog.SetLogger(c.Conf.LogDir, false, c.Conf.Debug, false) - if err := c.Load(p.configPath, ""); err != nil { util.Log.Errorf("Error loading %s, %+v", p.configPath, err) return subcommands.ExitUsageError diff --git a/commands/scan.go b/commands/scan.go index d200b70e..510a5d33 100644 --- a/commands/scan.go +++ b/commands/scan.go @@ -49,6 +49,7 @@ func (*ScanCmd) Usage() string { [-timeout=300] [-timeout-scan=7200] [-debug] + [-quiet] [-pipe] [-vvv] [-ips] @@ -61,6 +62,7 @@ func (*ScanCmd) Usage() string { // SetFlags set flag func (p *ScanCmd) SetFlags(f *flag.FlagSet) { f.BoolVar(&c.Conf.Debug, "debug", false, "debug mode") + f.BoolVar(&c.Conf.Quiet, "quiet", false, "Quiet mode. No output on stdout") wd, _ := os.Getwd() defaultConfPath := filepath.Join(wd, "config.toml") diff --git a/commands/server.go b/commands/server.go index 9bb9dc76..9ed06149 100644 --- a/commands/server.go +++ b/commands/server.go @@ -19,7 +19,6 @@ import ( "github.com/future-architect/vuls/server" "github.com/future-architect/vuls/util" "github.com/google/subcommands" - cvelog "github.com/kotakanbe/go-cve-dictionary/log" ) // ServerCmd is subcommand for server @@ -142,8 +141,6 @@ func (p *ServerCmd) SetFlags(f *flag.FlagSet) { // Execute execute func (p *ServerCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { util.Log = util.NewCustomLogger(c.ServerInfo{}) - cvelog.SetLogger(c.Conf.LogDir, false, c.Conf.Debug, false) - if p.configPath != "" { if err := c.Load(p.configPath, ""); err != nil { util.Log.Errorf("Error loading %s. err: %+v", p.configPath, err) diff --git a/commands/tui.go b/commands/tui.go index 1ffe8ee5..f69e63cf 100644 --- a/commands/tui.go +++ b/commands/tui.go @@ -16,7 +16,6 @@ import ( "github.com/future-architect/vuls/report" "github.com/future-architect/vuls/util" "github.com/google/subcommands" - cvelog "github.com/kotakanbe/go-cve-dictionary/log" ) // TuiCmd is Subcommand of host discovery mode @@ -144,17 +143,13 @@ func (p *TuiCmd) SetFlags(f *flag.FlagSet) { // Execute execute func (p *TuiCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) subcommands.ExitStatus { - c.Conf.Lang = "en" - - // Setup Logger util.Log = util.NewCustomLogger(c.ServerInfo{}) - cvelog.SetLogger(c.Conf.LogDir, false, c.Conf.Debug, false) - if err := c.Load(p.configPath, ""); err != nil { util.Log.Errorf("Error loading %s, err: %+v", p.configPath, err) return subcommands.ExitUsageError } + c.Conf.Lang = "en" c.Conf.CveDict.Overwrite(p.cveDict) c.Conf.OvalDict.Overwrite(p.ovalDict) c.Conf.Gost.Overwrite(p.gostConf) diff --git a/scan/executil.go b/scan/executil.go index 9f695383..df215a92 100644 --- a/scan/executil.go +++ b/scan/executil.go @@ -333,7 +333,7 @@ func sshExecExternal(c conf.ServerInfo, cmd string, sudo bool) (result execResul func getSSHLogger(log ...*logrus.Entry) *logrus.Entry { if len(log) == 0 { - return util.NewCustomLogger(conf.ServerInfo{}) + return util.Log } return log[0] } diff --git a/util/logutil.go b/util/logutil.go index ef7abb82..f56591c9 100644 --- a/util/logutil.go +++ b/util/logutil.go @@ -34,6 +34,10 @@ func NewCustomLogger(c config.ServerInfo) *logrus.Entry { log.Level = logrus.DebugLevel } + if flag.Lookup("test.v") != nil { + return logrus.NewEntry(log) + } + // File output logDir := GetDefaultLogDir() if 0 < len(config.Conf.LogDir) { @@ -52,6 +56,7 @@ func NewCustomLogger(c config.ServerInfo) *logrus.Entry { 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 { @@ -65,14 +70,18 @@ func NewCustomLogger(c config.ServerInfo) *logrus.Entry { if _, err := os.Stat(logDir); err == nil { path := filepath.Join(logDir, fmt.Sprintf("%s.log", whereami)) - 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)) + 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) + } } fields := logrus.Fields{"prefix": whereami}