Я в настоящее время пытаюсь разыскать источник некоторой ленивой загрузки, призывает, в спящем режиме, и самый легкий способ сделать так состоял бы в том, чтобы включить, в спящем режиме вход SQL каждый раз, когда ленивая загрузка собирается произойти и затем идеально инициировать вывод отслеживания стека каждый раз, когда регистратор используется. Прямо сейчас я использую, в спящем режиме 3.5.2, который использует SLF4j и использующий Log4j в качестве моей реализации входа.
Я предполагаю, что мог использовать AOP для окружения каждого вызова входа и проверки, если это - вызов к регистратору SQL, но это кажется довольно жестоким, и я хотел знать, был ли более простой подход, который я пропускал, прежде чем я шел по той дороге.
Вы можете расширить одно из приложений log4j, а затем использовать его в своем log4j.xml.
public class StackPrintingFileAppender extends FileAppender {
protected void subAppend(LoggingEvent event) {
new Exception().printStackTrace(new PrintWriter(qw));
super.subAppend();
}
}
, а затем в log4j.xml:
<appender name="logger" class="StackPrintingFileAppender">
...
</appender>
Вы можете написать свой собственный мост SLF4j и поместить его в путь к классам вместо пути Log4j. Затем вы можете делегировать Log4j, но перехватывать вызовы по своему усмотрению, без AOP. Кажется, что его проще инструментировать, и он не страдает от каких-либо дополнительных проблем помимо АОП с точки зрения определения правильного регистратора и когда происходит отложенная загрузка.