Logging

Spring MVC 中的 DEBUG 级别的日志记录设计得紧凑、最少且便于阅读。它着重于有价值的信息片段,这些片段一用再用,而不是其他信息片段,后者只在调试特定问题时才有用。 TRACE 级别的日志记录通常遵循与 DEBUG 相同的原则(例如,也不应该泛滥成灾),但可用于调试任何问题。此外,一些日志消息可能会在 TRACE 与 DEBUG 中显示不同的详细程度。 良好的日志记录得益于使用日志的经验。如果你发现任何不符合既定目标的信息,请告知我们。

Sensitive Data

DEBUG 和 TRACE 记录可能会记录敏感信息。这就是为什么默认情况下请求参数和标头会被掩码,并且必须通过 DispatcherServlet 上的 enableLoggingRequestDetails 属性显式启用它们的完整记录。

以下示例展示了如何通过使用 Java 配置执行此操作:

  • Java

  • Kotlin

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")
	}
}