diff --git a/engine.go b/engine.go
index b221dc168288108424c2d9e092caf5c21440d700..66cb708d2008b3ab3c90fe2fc05b12327d680798 100644
--- a/engine.go
+++ b/engine.go
@@ -20,22 +20,21 @@ import (
 	"encoding/json"
 	"errors"
 	"fmt"
-	stdlog "log"
-	"os"
 	"reflect"
 	"sort"
 	"strings"
 
 	"github.com/go-logr/logr"
-	"github.com/go-logr/stdr"
 	"github.com/rs/xid"
+
+	"github.com/bytedance/dddfirework/logger/stdr"
 )
 
 var ErrBreak = fmt.Errorf("break process") // 中断流程,不返回错误
 var ErrEntityNotFound = fmt.Errorf("entity not found")
 var ErrEntityRepeated = fmt.Errorf("entity already added")
 
-var defaultLogger = stdr.New(stdlog.New(os.Stderr, "", stdlog.LstdFlags|stdlog.Lshortfile)).WithName("ddd_engine")
+var defaultLogger = stdr.NewStdr("ddd_engine")
 
 type ILock interface {
 	Lock(ctx context.Context, key string) (keyLock interface{}, err error)
diff --git a/eventbus/mysql/eventbus.go b/eventbus/mysql/eventbus.go
index 89050d8d2bc7ffbfd46085b561b2d23284702077..3920ba276299c2a3b7ae106e2bec290d9e985975 100644
--- a/eventbus/mysql/eventbus.go
+++ b/eventbus/mysql/eventbus.go
@@ -19,19 +19,18 @@ import (
 	"context"
 	"errors"
 	"fmt"
-	stdlog "log"
-	"os"
 	"sync"
 	"time"
 	"unicode/utf8"
 
 	"github.com/go-logr/logr"
-	"github.com/go-logr/stdr"
 	"github.com/robfig/cron"
 	"gorm.io/gorm"
 	"gorm.io/gorm/clause"
 
 	"github.com/bytedance/dddfirework"
+	"github.com/bytedance/dddfirework/logger"
+	"github.com/bytedance/dddfirework/logger/stdr"
 )
 
 const retryInterval = time.Second * 3
@@ -52,7 +51,7 @@ var ErrInvalidDB = fmt.Errorf("invalid db")
 var ErrNoTransaction = fmt.Errorf("no transaction")
 var ErrServiceNotCreate = fmt.Errorf("service not create")
 
-var defaultLogger = stdr.New(stdlog.New(os.Stderr, "", stdlog.LstdFlags|stdlog.Lshortfile)).WithName("mysql_eventbus")
+var defaultLogger = stdr.NewStdr("mysql_eventbus")
 
 type IRetryStrategy interface {
 	// Next 获取下一次重试的策略,返回 nil 表示不再重试
@@ -440,7 +439,7 @@ func (e *EventBus) dispatchEvents(ctx context.Context, eventPOs []*EventPO) (suc
 }
 
 func (e *EventBus) handleEvents() error {
-	e.logger.V(4).Info("handle events")
+	e.logger.V(logger.LevelDebug).Info("handle events")
 
 	return e.db.Transaction(func(tx *gorm.DB) error {
 		ctx := context.Background()
diff --git a/logger/logger.go b/logger/logger.go
new file mode 100644
index 0000000000000000000000000000000000000000..4ca7e277ead622a1833570c1fa51840e6943e323
--- /dev/null
+++ b/logger/logger.go
@@ -0,0 +1,26 @@
+//
+// Copyright 2023 Bytedance Ltd. and/or its affiliates
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package logger
+
+// LogLevel 日志级别,值越大级别越低
+const (
+	LevelWarn         = iota // warn日志级别
+	LevelInfo                // info日志级别
+	LevelInfoVerbose         // info详细日志级别
+	LevelInfoExtended        // info扩展信息日志级别
+	LevelDebug               // debug日志级别
+	LevelTrace               // trace日志级别
+)
diff --git a/logger/stdr/stdr.go b/logger/stdr/stdr.go
new file mode 100644
index 0000000000000000000000000000000000000000..9a0e94896346170010dc3ea8d7771563ed6dc14a
--- /dev/null
+++ b/logger/stdr/stdr.go
@@ -0,0 +1,28 @@
+//
+// Copyright 2023 Bytedance Ltd. and/or its affiliates
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package stdr
+
+import (
+	stdlog "log"
+	"os"
+
+	"github.com/go-logr/logr"
+	"github.com/go-logr/stdr"
+)
+
+func NewStdr(name string) logr.Logger {
+	return stdr.New(stdlog.New(os.Stderr, "", stdlog.LstdFlags|stdlog.Lshortfile)).WithName(name)
+}