37 lines
974 B
Go
37 lines
974 B
Go
package winpwn
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
// Info/Success/Warn/Error are winpwn's leveled logger, the analogue of
|
|
// pwntools' log.info/log.success/log.warn/log.error. All four write to
|
|
// stderr (so they never interleave with a tube's own stdout traffic) and
|
|
// are gated by Context.LogLevel -- set Context.LogLevel = LogLevelSilent to
|
|
// quiet a script down for scripted/CI use.
|
|
func Info(format string, args ...any) {
|
|
logAt(LogLevelInfo, "[*]", format, args...)
|
|
}
|
|
|
|
func Success(format string, args ...any) {
|
|
logAt(LogLevelInfo, "[+]", format, args...)
|
|
}
|
|
|
|
func Warn(format string, args ...any) {
|
|
logAt(LogLevelWarn, "[!]", format, args...)
|
|
}
|
|
|
|
func Error(format string, args ...any) {
|
|
logAt(LogLevelError, "[-]", format, args...)
|
|
}
|
|
|
|
func logAt(level LogLevel, prefix, format string, args ...any) {
|
|
if level < Context.LogLevel {
|
|
return
|
|
}
|
|
msg := fmt.Sprintf(format, args...)
|
|
fmt.Fprintf(os.Stderr, "%s %s %s\n", time.Now().Format("15:04:05"), prefix, msg)
|
|
}
|