Цикл статей «Project Lombok».
Следующая статья — «Настройка Lombok».
Предыдущая статья — «Lombok @Getter(lazy=true). Лень — это хорошо».
Новое в Lombok 0.10: Вы можете добавить аннотацию логгера к любому классу, чтобы Lombok генерировал поле логгера. Поле логгера имеет имя log, и тип поля зависит от выбранного логгера.
Доступно шесть типов логгеров:
@CommonsLog
Создаёт
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
@Log
Создаёт
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@Log4j
Создаёт
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Log4j2
Создаёт
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
@Slf4j
Создаёт
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@XSlf4j
Создаёт
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
По умолчанию тема (или имя) логгера будет имя класса, аннотированного с @Log. Это может быть изменено с помощью параметра topic. Например: @XSlf4j(topic="reporting").
С помощью Lombok
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import lombok.extern.java.Log; import lombok.extern.slf4j.Slf4j; @Log public class LogExample { public static void main(String... args) { log.error("Something's wrong here"); } } @Slf4j public class LogExampleOther { public static void main(String... args) { log.error("Something else is wrong here"); } } @CommonsLog(topic = "CounterLog") public class LogExampleCategory { public static void main(String... args) { log.error("Calling the 'CounterLog' with a message"); } } |
Чистая Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public class LogExample { private static final java.util.logging.Logger log = java.util.logging.Logger .getLogger(LogExample.class.getName()); public static void main(String... args) { log.error("Something's wrong here"); } } public class LogExampleOther { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory .getLogger(LogExampleOther.class); public static void main(String... args) { log.error("Something else is wrong here"); } } public class LogExampleCategory { private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory .getLog("CounterLog"); public static void main(String... args) { log.error("Calling the 'CounterLog' with a message"); } } |
Поддерживаемые ключи конфигурации
1 |
lombok.log.fieldName = an identifier (default: log) |
Сгенерированное поле логгера по умолчанию имеет имя log, но вы можете изменить имя на другое с помощью этой настройки.
1 |
lombok.log.fieldIsStatic = [true | false] (default: true) |
Обычно генерируется статическое поле логгера, но вы можете поменять его на поле экземпляра с помощью этой настройки.
1 |
lombok.log.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование аннотаций логгирования предупреждением или ошибкой, если настроено.
1 |
lombok.log.apacheCommons.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.apachecommons.CommonsLog предупреждением или ошибкой, если настроено.
1 |
lombok.log.javaUtilLogging.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.java.Log предупреждением или ошибкой, если настроено.
1 |
lombok.log.log4j.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.log4j.Log4j предупреждением или ошибкой, если настроено.
1 |
lombok.log.log4j2.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.log4j.Log4j2 предупреждением или ошибкой, если настроено.
1 |
lombok.log.slf4j.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.slf4j.Slf4j предупреждением или ошибкой, если настроено.
1 |
lombok.log.xslf4j.flagUsage = [warning | error] (default: not set) |
Lombok будет помечать любое использование @lombok.extern.slf4j.XSlf4j предупреждением или ошибкой, если настроено.
Примечания
Если поле с именем log уже существует, то возникает предупреждение (warning), и код для поля не генерируется.
В будущем Lombok будет искать обращения к полю логгирования, и если выбранный фраймворк логгирования поддерживает его, и уровень логгирования может быть определён во время компиляции, обрамляет его оператором if. Если обрамлённый оператор логгирования игнорируется, то потенциально затратное вычисления строки лога исключается полностью. Это означает, что в вызове метода логгирования вы НЕ должны использовать операции, имеющие какой-либо посторонний эффект, кроме построения строки логгирования.
Цикл статей «Project Lombok».
Следующая статья — «Настройка Lombok».
Предыдущая статья — «Lombok @Getter(lazy=true). Лень — это хорошо».