diff --git a/convert.go b/convert.go index 0205e519..978818c7 100644 --- a/convert.go +++ b/convert.go @@ -7,7 +7,6 @@ import ( "io/ioutil" "path/filepath" - "github.com/rs/zerolog/log" "gopkg.in/yaml.v3" ) diff --git a/har2case/core.go b/har2case/core.go index 2ad3a066..5d983b39 100644 --- a/har2case/core.go +++ b/har2case/core.go @@ -12,11 +12,12 @@ import ( "strings" "github.com/pkg/errors" - "github.com/rs/zerolog/log" "github.com/httprunner/hrp" ) +var log = hrp.GetLogger() + const ( suffixJSON = ".json" suffixYAML = ".yaml" diff --git a/hrp/cmd/boom.go b/hrp/cmd/boom.go index 118f8083..6de19900 100644 --- a/hrp/cmd/boom.go +++ b/hrp/cmd/boom.go @@ -18,6 +18,7 @@ var boomCmd = &cobra.Command{ $ hrp boom examples/ # run testcases in specified folder`, Args: cobra.MinimumNArgs(1), Run: func(cmd *cobra.Command, args []string) { + hrp.SetLogLevel(logLevel) var paths []hrp.ITestCase for _, arg := range args { paths = append(paths, &hrp.TestCasePath{Path: arg}) diff --git a/hrp/cmd/har2case.go b/hrp/cmd/har2case.go index 749ff4e4..4a3088af 100644 --- a/hrp/cmd/har2case.go +++ b/hrp/cmd/har2case.go @@ -4,6 +4,7 @@ import ( "github.com/rs/zerolog/log" "github.com/spf13/cobra" + "github.com/httprunner/hrp" "github.com/httprunner/hrp/har2case" ) @@ -14,6 +15,7 @@ var har2caseCmd = &cobra.Command{ Long: `Convert HAR to json/yaml testcase files`, Args: cobra.MinimumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { + hrp.SetLogLevel(logLevel) var outputFiles []string for _, arg := range args { var outputPath string diff --git a/hrp/cmd/root.go b/hrp/cmd/root.go index 46f16caf..cbcb4ffb 100644 --- a/hrp/cmd/root.go +++ b/hrp/cmd/root.go @@ -21,9 +21,17 @@ Copyright 2021 debugtalk`, Version: hrp.VERSION, } +var ( + logLevel string + logJSON bool +) + // Execute adds all child commands to the root command and sets flags appropriately. // This is called by main.main(). It only needs to happen once to the rootCmd. func Execute() { + RootCmd.PersistentFlags().StringVarP(&logLevel, "log-level", "l", "INFO", "set log level") + RootCmd.PersistentFlags().BoolVar(&logJSON, "log-json", false, "set log to json format") + if err := RootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) diff --git a/hrp/cmd/run.go b/hrp/cmd/run.go index 782cff8c..f23c08b1 100644 --- a/hrp/cmd/run.go +++ b/hrp/cmd/run.go @@ -16,6 +16,7 @@ var runCmd = &cobra.Command{ $ hrp run examples/ # run testcases in specified folder`, Args: cobra.MinimumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { + hrp.SetLogLevel(logLevel) var paths []hrp.ITestCase for _, arg := range args { paths = append(paths, &hrp.TestCasePath{Path: arg}) diff --git a/log.go b/log.go new file mode 100644 index 00000000..c943208a --- /dev/null +++ b/log.go @@ -0,0 +1,38 @@ +package hrp + +import ( + "os" + "strings" + + "github.com/rs/zerolog" + zlog "github.com/rs/zerolog/log" +) + +var log = zlog.Logger + +func init() { + log = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) +} + +func SetLogLevel(level string) { + level = strings.ToUpper(level) + log.Info().Msgf("Set log level to %s", level) + switch level { + case "DEBUG": + zerolog.SetGlobalLevel(zerolog.DebugLevel) + case "INFO": + zerolog.SetGlobalLevel(zerolog.InfoLevel) + case "WARN": + zerolog.SetGlobalLevel(zerolog.WarnLevel) + case "ERROR": + zerolog.SetGlobalLevel(zerolog.ErrorLevel) + case "FATAL": + zerolog.SetGlobalLevel(zerolog.FatalLevel) + case "PANIC": + zerolog.SetGlobalLevel(zerolog.PanicLevel) + } +} + +func GetLogger() zerolog.Logger { + return log +} diff --git a/parser.go b/parser.go index 07fe9f6d..4a16d993 100644 --- a/parser.go +++ b/parser.go @@ -9,7 +9,6 @@ import ( "strings" "github.com/maja42/goval" - "github.com/rs/zerolog/log" "github.com/httprunner/hrp/builtin" ) diff --git a/response.go b/response.go index a95c9cd9..c471c75a 100644 --- a/response.go +++ b/response.go @@ -7,7 +7,6 @@ import ( "github.com/imroc/req" "github.com/jmespath/go-jmespath" - "github.com/rs/zerolog/log" "github.com/httprunner/hrp/builtin" ) diff --git a/runner.go b/runner.go index f6b4d9c8..7ee289e6 100644 --- a/runner.go +++ b/runner.go @@ -2,19 +2,12 @@ package hrp import ( "net/http" - "os" "testing" "github.com/imroc/req" "github.com/pkg/errors" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" ) -func init() { - log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) -} - // run API test with default configs func Run(t *testing.T, testcases ...ITestCase) error { return NewRunner().WithTestingT(t).SetDebug(true).Run(testcases...)