87 lines
2.1 KiB
Go
87 lines
2.1 KiB
Go
/*
|
|
Copyright 2023 API Testing Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package runner
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// LevelWriter represents a writer with level
|
|
type LevelWriter interface {
|
|
Info(format string, a ...any)
|
|
Debug(format string, a ...any)
|
|
Trace(format string, a ...any)
|
|
}
|
|
|
|
// FormatPrinter represents a formart printer with level
|
|
type FormatPrinter interface {
|
|
Fprintf(w io.Writer, level, format string, a ...any) (n int, err error)
|
|
}
|
|
|
|
type defaultLevelWriter struct {
|
|
level LogLevel
|
|
io.Writer
|
|
FormatPrinter
|
|
}
|
|
|
|
// NewDefaultLevelWriter creates a default LevelWriter instance
|
|
func NewDefaultLevelWriter(level string, writer io.Writer) LevelWriter {
|
|
result := &defaultLevelWriter{
|
|
Writer: writer,
|
|
}
|
|
switch level {
|
|
case "trace":
|
|
result.level = LogLevelTrace
|
|
case "debug":
|
|
result.level = LogLevelDebug
|
|
case "info":
|
|
result.level = LogLevelInfo
|
|
}
|
|
return result
|
|
}
|
|
|
|
type LogLevel int
|
|
|
|
const (
|
|
LogLevelInfo LogLevel = 3
|
|
LogLevelDebug LogLevel = 5
|
|
LogLevelTrace LogLevel = 7
|
|
)
|
|
|
|
// Fprintf implements interface FormatPrinter
|
|
func (w *defaultLevelWriter) Fprintf(writer io.Writer, level LogLevel, format string, a ...any) (n int, err error) {
|
|
if level <= w.level {
|
|
return fmt.Fprintf(writer, format, a...)
|
|
}
|
|
return
|
|
}
|
|
|
|
// Info writes the info level message
|
|
func (w *defaultLevelWriter) Info(format string, a ...any) {
|
|
w.Fprintf(w.Writer, LogLevelInfo, format, a...)
|
|
}
|
|
|
|
// Debug writes the debug level message
|
|
func (w *defaultLevelWriter) Debug(format string, a ...any) {
|
|
w.Fprintf(w.Writer, LogLevelDebug, format, a...)
|
|
}
|
|
|
|
func (w *defaultLevelWriter) Trace(format string, a ...any) {
|
|
w.Fprintf(w.Writer, LogLevelTrace, format, a...)
|
|
}
|