diff --git a/logger/global.go b/logger/global.go
index c04253667b5c9dff7402c2d2a5e853fce8cd5478..ca25a0273c19b7227d0b5d4106cb02ecad9338e1 100644
--- a/logger/global.go
+++ b/logger/global.go
@@ -76,3 +76,11 @@ func Debugf(format string, args ...interface{}) {
 func Debug(args ...interface{}) {
 	globalLogger.log(LevelDebug, 1, fmt.Sprint(args...))
 }
+
+func Tracef(format string, args ...interface{}) {
+	globalLogger.log(LevelTrace, 1, fmt.Sprintf(format, args...))
+}
+
+func Trace(args ...interface{}) {
+	globalLogger.log(LevelTrace, 1, fmt.Sprint(args...))
+}
diff --git a/logger/level.go b/logger/level.go
index 3014994e7f9fa39006368bf8ad965ffb44e3ced9..2546da64324ae5f999ad05d10ac91970ba8b0096 100644
--- a/logger/level.go
+++ b/logger/level.go
@@ -16,6 +16,8 @@ func (level Level) String() string {
 		return "info"
 	case LevelDebug:
 		return "debug"
+	case LevelTrace:
+		return "trace"
 	}
 	return fmt.Sprintf("Level(%d)", level)
 }
@@ -30,4 +32,5 @@ const (
 	LevelWarn
 	LevelInfo
 	LevelDebug
+	LevelTrace
 )
diff --git a/logger/logger.go b/logger/logger.go
index 736846d0ec5117c1f6090c2bf3b2061c87d5a49f..6899dc3300b8a60bbcd33d11ccacc8c1941662de 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -20,6 +20,8 @@ type Logger interface {
 	Info(args ...interface{})
 	Debugf(format string, args ...interface{})
 	Debug(args ...interface{})
+	Tracef(format string, args ...interface{})
+	Trace(args ...interface{})
 
 	WithFields(data map[string]interface{}) logger
 }
@@ -87,6 +89,14 @@ func (l logger) Debug(args ...interface{}) {
 	l.log(LevelDebug, 1, fmt.Sprint(args...))
 }
 
+func (l logger) Tracef(format string, args ...interface{}) {
+	l.log(LevelTrace, 1, fmt.Sprintf(format, args...))
+}
+
+func (l logger) Trace(args ...interface{}) {
+	l.log(LevelTrace, 1, fmt.Sprint(args...))
+}
+
 func (l logger) log(level Level, skip int, msg string) {
 	if level <= l.level && l.writer != nil {
 		entry := Entry{