mirror of
https://github.com/DominicBreuker/pspy.git
synced 2025-12-21 11:44:51 +00:00
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package logging
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
const (
|
|
ColorNone = iota
|
|
ColorRed
|
|
ColorGreen
|
|
)
|
|
|
|
type Logger struct {
|
|
infoLogger *log.Logger
|
|
errorLogger *log.Logger
|
|
eventLogger *log.Logger
|
|
debug bool
|
|
}
|
|
|
|
func NewLogger(debug bool) *Logger {
|
|
return &Logger{
|
|
infoLogger: log.New(os.Stdout, "", 0),
|
|
errorLogger: log.New(os.Stderr, "", 0),
|
|
eventLogger: log.New(os.Stdout, "", log.Ldate|log.Ltime),
|
|
debug: debug,
|
|
}
|
|
}
|
|
|
|
// Infof writes an info message to stdout
|
|
func (l *Logger) Infof(format string, v ...interface{}) {
|
|
l.infoLogger.Printf(format, v...)
|
|
}
|
|
|
|
// Errorf writes an error message to stderr
|
|
func (l *Logger) Errorf(debug bool, format string, v ...interface{}) {
|
|
if l.debug == debug {
|
|
l.errorLogger.Printf(format, v...)
|
|
}
|
|
}
|
|
|
|
// Eventf writes an event with timestamp to stdout
|
|
func (l *Logger) Eventf(color int, format string, v ...interface{}) {
|
|
msg := fmt.Sprintf(format, v...)
|
|
|
|
switch color {
|
|
case ColorRed:
|
|
msg = fmt.Sprintf("\x1b[31;1m%s\x1b[0m", msg)
|
|
case ColorGreen:
|
|
msg = fmt.Sprintf("\x1b[32;1m%s\x1b[0m", msg)
|
|
default:
|
|
}
|
|
|
|
l.eventLogger.Printf("%s", msg)
|
|
}
|