func (l *Logger) INFO(format string, a ...interface{}) {
	l.info.Printf(format, a...)
}
INFO logs informational messages, used for reporting back informational
messages that are generally useful.
package logger
import (
	"io"
	"io/ioutil"
	"log"
)
type Logger struct {
	trace   *log.Logger
	info    *log.Logger
	warning *log.Logger
	error   *log.Logger
}
func New(traceDest, infoDest, warningDest, errorDest io.Writer) *Logger {
	if traceDest == nil {
		traceDest = ioutil.Discard
	}
	if infoDest == nil {
		infoDest = ioutil.Discard
	}
	if warningDest == nil {
		warningDest = ioutil.Discard
	}
	if errorDest == nil {
		errorDest = ioutil.Discard
	}
	return &Logger{
		log.New(traceDest, "TRACE: ", log.Ldate|log.Ltime|log.Lshortfile),
		log.New(infoDest, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile),
		log.New(warningDest, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile),
		log.New(errorDest, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile),
	}
}
func (l *Logger) TRACE(format string, a ...interface{}) {
	l.trace.Printf(format, a...)
}