Журналирование на уровне DEBUG в Spring MVC спроектировано с учетом обеспечения компактности, минимализма и удобства для человека. Оно фокусируется на битах информации, имеющих особо высокое значение, которые применяются снова и снова, в отличие от других, которые применяются только при отладке конкретной проблемы.

Ведение журнала на уровне TRACE в целом следует тем же принципам, что и DEBUG (и, например, также не должно быть перегруженным), но может быть использовано для отладки любой проблемы. Кроме того, некоторые сообщения в журнале могут демонстрировать разный уровень детализации на уровне TRACE по сравнению с DEBUG.

Надлежащее журналирование зависит от опыта использования журналов. Если вы заметите что-то, что не соответствует заявленным целям, пожалуйста, сообщите нам об этом.

Конфиденциальные данные

С помощью журналирования на уровнях DEBUG и TRACE можно регистрировать конфиденциальную информацию. Именно поэтому параметры и заголовки запроса по умолчанию маскируются, а их полное журналирование должно быть активировано явным образом через свойство enableLoggingRequestDetails для DispatcherServlet.

В следующем примере показано, как это сделать с помощью конфигурации Java:

Java
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");
    }
}
Kotlin
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")
    }
}