fix: caller location error in logs (#2367)

diff --git a/api/internal/log/zap.go b/api/internal/log/zap.go
index 1f3f44a..446dde7 100644
--- a/api/internal/log/zap.go
+++ b/api/internal/log/zap.go
@@ -43,16 +43,18 @@
 func GetLogger(logType Type) *zap.SugaredLogger {
 	_ = zap.RegisterSink("winfile", newWinFileSink)
 
+	skip := 2
 	writeSyncer := fileWriter(logType)
 	encoder := getEncoder(logType)
 	logLevel := getLogLevel()
 	if logType == AccessLog {
 		logLevel = zapcore.InfoLevel
+		skip = 0
 	}
 
 	core := zapcore.NewCore(encoder, writeSyncer, logLevel)
 
-	zapLogger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(2))
+	zapLogger := zap.New(core, zap.AddCaller(), zap.AddCallerSkip(skip))
 
 	return zapLogger.Sugar()
 }
diff --git a/api/test/shell/cli_test.sh b/api/test/shell/cli_test.sh
index d41f270..56d783f 100755
--- a/api/test/shell/cli_test.sh
+++ b/api/test/shell/cli_test.sh
@@ -200,6 +200,9 @@
   stop_dashboard 6
 
   [ $(grep -c "/apisix/admin/user/login" "${ACCESS_LOG_FILE}") -ne '0' ]
+
+  # check logging middleware
+  [ $(grep -c "filter/logging.go" "${ACCESS_LOG_FILE}") -ne '0' ]
 }
 
 #8