diff --git a/logger/slog/slog.go b/logger/slog/slog.go
index 0b278c57..949b868d 100644
--- a/logger/slog/slog.go
+++ b/logger/slog/slog.go
@@ -278,7 +278,7 @@ func (s *slogLogger) printLog(ctx context.Context, lvl logger.Level, msg string,
 		}
 	}
 
-	if (s.opts.AddStacktrace || lvl == logger.FatalLevel) || (s.opts.AddStacktrace && lvl == logger.ErrorLevel) {
+	if s.opts.AddStacktrace && (lvl == logger.FatalLevel || lvl == logger.ErrorLevel) {
 		stackInfo := make([]byte, 1024*1024)
 		if stackSize := runtime.Stack(stackInfo, false); stackSize > 0 {
 			traceLines := reTrace.Split(string(stackInfo[:stackSize]), -1)
diff --git a/logger/slog/slog_test.go b/logger/slog/slog_test.go
index e8e6d353..1dae9109 100644
--- a/logger/slog/slog_test.go
+++ b/logger/slog/slog_test.go
@@ -21,7 +21,7 @@ import (
 func TestStacktrace(t *testing.T) {
 	ctx := context.TODO()
 	buf := bytes.NewBuffer(nil)
-	l := NewLogger(logger.WithLevel(logger.ErrorLevel), logger.WithOutput(buf),
+	l := NewLogger(logger.WithLevel(logger.DebugLevel), logger.WithOutput(buf),
 		WithHandlerFunc(slog.NewTextHandler),
 		logger.WithAddStacktrace(true),
 	)