diff --git a/logging/logger.go b/logging/logger.go
new file mode 100644
index 0000000..0ecc35c
--- /dev/null
+++ b/logging/logger.go
@@ -0,0 +1,70 @@
+package logging
+
+import (
+	"fmt"
+	"io/ioutil"
+	"log"
+	"os"
+)
+
+var (
+	dbg  *log.Logger
+	info *log.Logger
+	warn *log.Logger
+	err  *log.Logger
+)
+
+func Init() {
+	flags := log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile | log.LUTC
+	dbg = log.New(os.Stdout, "DEBUG ", flags)
+	info = log.New(os.Stdout, "INFO  ", flags)
+	warn = log.New(os.Stdout, "WARN  ", flags)
+	err = log.New(os.Stdout, "ERROR ", flags)
+}
+
+func ErrorLogger() *log.Logger {
+	if err == nil {
+		return log.New(ioutil.Discard, "", log.LstdFlags)
+	}
+	return err
+}
+
+func Debugf(message string, args ...interface{}) {
+	if dbg == nil {
+		return
+	}
+	if len(args) > 0 {
+		message = fmt.Sprintf(message, args...)
+	}
+	dbg.Output(2, message)
+}
+
+func Infof(message string, args ...interface{}) {
+	if info == nil {
+		return
+	}
+	if len(args) > 0 {
+		message = fmt.Sprintf(message, args...)
+	}
+	info.Output(2, message)
+}
+
+func Warnf(message string, args ...interface{}) {
+	if warn == nil {
+		return
+	}
+	if len(args) > 0 {
+		message = fmt.Sprintf(message, args...)
+	}
+	warn.Output(2, message)
+}
+
+func Errorf(message string, args ...interface{}) {
+	if err == nil {
+		return
+	}
+	if len(args) > 0 {
+		message = fmt.Sprintf(message, args...)
+	}
+	err.Output(2, message)
+}