Комментарии 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'ник называется по другому. А насчет
я сейчас скажу, как сделать действительно удобно. Во-первых подключите lombok. Во-вторых не слушайте эстетов, которые при слове lombok начинают шипеть и плеваться ядом. В-третьих в lombok.config напишите:
Готово, теперь достаточно поставить аннотацию @Slf4j, и можно использовать ту самую переменную logger.
private static Logger logger = LoggerFactory.getLogger(YourClass.class);
я сейчас скажу, как сделать действительно удобно. Во-первых подключите lombok. Во-вторых не слушайте эстетов, которые при слове lombok начинают шипеть и плеваться ядом. В-третьих в lombok.config напишите:
lombok.log.fieldName=logger
Готово, теперь достаточно поставить аннотацию @Slf4j, и можно использовать ту самую переменную logger.
Подскажите, а что за решение вы используете для подстановки 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
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Удобное логирование в SpringBoot + Log4j2 + Maven