Я тоже недавно это изучал. Я годами использую Log4J с Commons Logging и недавно переключился на SLF4J.
Log4j - это фреймворк для на самом деле , выполняющего запись / распространение журнала. Он чрезвычайно гибок: вы можете настроить его для отправки сообщений журнала в файлы, системного журнала, удаленного мониторинга и т. Д. Вы также можете настроить несколько регистраторов, категории журналов, включить контекст в записи и т. Д. Это одна из самых популярных систем регистрации.
Встроенная регистрация JDK (которую я никогда не использовал, если честно) была добавлена в JDK 1.4.2. Судя по тому, что я понял, он не очень популярен, потому что он не такой гибкий, как Log4j, но я бы приветствовал комментарии:).
Оба они являются фасадами поверх различных каркасов логирования, которые представляют общий интерфейс для вашего приложения. Например, вы можете использовать CL / SLF4J в своем приложении, и они автоматически обнаружат базовую реализацию регистратора (Log4J, протоколирование JDK или встроенный регистратор, который просто делегирует System.err.println()
). Преимущество заключается в том, что вы или ваш конечный пользователь можете по своему усмотрению отключить базовую реализацию ведения журнала, и они значительно упрощают вашу реализацию, устраняя многие сложности ведения журналов Log4J и JDK.