对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

日志记录

Spring MVC 中的 DEBUG 级别日志设计为紧凑、简洁且对人类友好。它侧重于那些反复有用的关键信息,而不是仅在调试特定问题时才有用的信息。spring-doc.cadn.net.cn

TRACE级别的日志记录通常遵循与DEBUG相同的原理(例如,也不应该是数据洪流),但可以用于调试任何问题。此外,一些日志消息在TRACE级别和DEBUG级别之间可能会显示不同级别的详细信息。spring-doc.cadn.net.cn

良好的日志记录来自于使用日志的经验。如果您发现任何不符合既定目标的情况,请告知我们。spring-doc.cadn.net.cn

敏感数据

DEBUG 和 TRACE 日志记录可能会记录敏感信息。这就是为什么默认情况下会屏蔽请求参数和标头,并且必须通过在 DispatcherServlet 上设置 enableLoggingRequestDetails 属性来显式启用它们的完整日志记录。spring-doc.cadn.net.cn

以下示例展示了如何通过使用Java配置来实现这一点:spring-doc.cadn.net.cn

public class MyInitializer
		extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class<?>[] getRootConfigClasses() {
		return ... ;
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		return ... ;
	}

	@Override
	protected String[] getServletMappings() {
		return ... ;
	}

	@Override
	protected void customizeRegistration(ServletRegistration.Dynamic registration) {
		registration.setInitParameter("enableLoggingRequestDetails", "true");
	}

}
class MyInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {

	override fun getRootConfigClasses(): Array<Class<*>>? {
		return ...
	}

	override fun getServletConfigClasses(): Array<Class<*>>? {
		return ...
	}

	override fun getServletMappings(): Array<String> {
		return ...
	}

	override fun customizeRegistration(registration: ServletRegistration.Dynamic) {
		registration.setInitParameter("enableLoggingRequestDetails", "true")
	}
}