Pull to refresh

Comments 9

А чем продиктован выбор log4j2 вместо slf4j + logback?
Попадались статьи, в которых он показывал лучший результат по производительности. Ну и с Log4j2 отношения у меня сложились лучше в процессе его конфигурации, было меньше проблем, чем с logback.

Если дело в logback, то тогда почему не slf4j over log4j2? Просто подход slf4j очень классный — мы даём вам api для логирования, а движок это вообще не наше дело. И slf4j стал уже негласным стандартом для множества проектов...

он показывал лучший результат по производительности

По производительности чего? Записи в лог на единицу времени? Если логгирование бьет по производительности системы, то, думаю, нужно не логгеры менять, а присмотреться к консерватории — что-то там не так…
«slf4j» не имеет всех фишек, что есть у log4j2, + лишняя прослойка в которой разные вещи могут быть реализованы не очень то и оптимально, к примеру log4j2 может вообще не делать мусор если вы логируете сообщения длиной около 460 символов, есть штука типа маркеров (не знаю есть ли такое в slf4j), lazy получение параметров через лямбды. slf4j имеет смысл использовать если вы пишете какую-то библиотеку и не знаете кем, где и с какими логерами она будет использоваться, а если вы пишете что-то лично для себя то можно не заморачиваться с использование «all-size-fits-on» решением
А в чем удобство? Вы описали обычную настройку логгера, logback настраивается примерно так же, с той разницей, что, скорее всего, отдельно подключать его не понадобится, поскольку он идет прицепом за spring-boot-starter-web (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html). Настройка аппендеров ничуть не сложнее, разве что xml'ник называется по другому. А насчет
private static Logger logger = LoggerFactory.getLogger(YourClass.class);

я сейчас скажу, как сделать действительно удобно. Во-первых подключите lombok. Во-вторых не слушайте эстетов, которые при слове lombok начинают шипеть и плеваться ядом. В-третьих в lombok.config напишите:
lombok.log.fieldName=logger


Готово, теперь достаточно поставить аннотацию @Slf4j, и можно использовать ту самую переменную logger.
1. удобство в том, что при выборе профиля в Maven автоматически определяются нужные appender'ы, вся суть в этом;
2. за трюк с lombok спасибо;
Подскажите, а что за решение вы используете для подстановки maven properties в файл *.properties? Я встречал решение с
<resource>
    <filtering>true</filtering>

Но у него было бы другое содержимое application.properties. Типа такого:
logstash.host=${logstash.host}

Может это я отстал от жизни?

Это фича Spring Boot, которая позволяет без использования maven-resource-plugin расширить property файл значениями из Maven или Gradle конфигурации.


Вот тут подробнее:
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-automatic-expansion-maven

Sign up to leave a comment.

Articles