sendmail/log.go

96 lines
1.9 KiB
Go

package main
import (
"io"
"io/ioutil"
"log"
"os"
"github.com/fatih/color"
)
type DebugLog struct {
logger *log.Logger
}
type InfoLog struct {
logger *log.Logger
}
type WarningLog struct {
logger *log.Logger
}
type ErrorLog struct {
logger *log.Logger
}
var (
Debug = &DebugLog{}
Info = &InfoLog{}
Warning = &WarningLog{}
Error = &ErrorLog{}
)
func (l *DebugLog) F(fmt string, text ...interface{}) {
l.logger.Print(color.MagentaString(fmt, text...))
}
func (l *DebugLog) Ln(text ...interface{}) {
l.logger.Print(color.MagentaString("%s", text...))
}
func (l *InfoLog) F(fmt string, text ...interface{}) {
l.logger.Print(color.WhiteString(fmt, text...))
}
func (l *InfoLog) Ln(text ...interface{}) {
l.logger.Print(color.WhiteString("%s", text...))
}
func (l *WarningLog) F(fmt string, text ...interface{}) {
l.logger.Print(color.YellowString(fmt, text...))
}
func (l *WarningLog) Ln(text ...interface{}) {
l.logger.Print(color.YellowString("%s", text...))
}
func (l *ErrorLog) F(fmt string, text ...interface{}) {
l.logger.Print(color.RedString(fmt, text...))
}
func (l *ErrorLog) Ln(text ...interface{}) {
l.logger.Print(color.RedString("%s", text...))
}
func (l *DebugLog) init(w io.Writer, prefix string, flag int) {
l.logger = &log.Logger{}
l.logger = log.New(w, prefix, flag)
}
func (l *InfoLog) init(w io.Writer, prefix string, flag int) {
l.logger = &log.Logger{}
l.logger = log.New(w, prefix, flag)
}
func (l *WarningLog) init(w io.Writer, prefix string, flag int) {
l.logger = &log.Logger{}
l.logger = log.New(w, prefix, flag)
}
func (l *ErrorLog) init(w io.Writer, prefix string, flag int) {
l.logger = &log.Logger{}
l.logger = log.New(w, prefix, flag)
}
func LogInit(debug bool) {
var debugOut io.Writer
if debug {
debugOut = os.Stdout
} else {
debugOut = ioutil.Discard
}
Debug.init(debugOut, "", 0)
Info.init(os.Stdout, "", 0)
Warning.init(os.Stdout, "", 0)
Error.init(os.Stderr, "", 0)
}