Я использую log4j для управления регистрацией в приложении Clojure.Я хотел бы иметь возможность использовать системную переменную, чтобы установить уровень журнала для одного пакета в файле log4j.properties.Так, например, вот мой базовый файл свойств:
log4j.rootLogger=INFO,console,sentry
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss,SSSZ} %-5p [%t] %-4r %c %x - %m%n
log4j.logger.company.logging.logger=DEBUG
Это устанавливает уровень ведения журнала в DEBUG в company.logging.logger
(где находится конкретный код ведения журнала. Однако я не хочу этого - яхочу, чтобы он был DEBUG на локальном компьютере, но INFO на производстве (AWS). Поэтому я использую переменную окружения:
log4j.rootLogger=INFO,console,sentry
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss,SSSZ} %-5p [%t] %-4r %c %x - %m%n
log4j.logger.company.logging.logger=${env:LOG_LEVEL}
Это не работает. LOG_LEVEL
в данном случаеустановлен на DEBUG
, и я могу подтвердить, что в противном случае он будет работать, используя переменную окружения для установки уровня ведения журнала root
на DEBUG.
Так, например:
log4j.rootLogger=${env:LOG_LEVEL},console,sentry
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd'T'HH:mm:ss,SSSZ} %-5p [%t] %-4r %c %x - %m%n
log4j.logger.company.logging.logger=${env:LOG_LEVEL}
Это устанавливает уровень ведения журнала всего приложения на DEBUG
. Это нежелательно: это делает журналы приложений настолько многословными, что их невозможно использовать.
Вопрос заключается в следующем:
Можно ли использовать переменные среды для установки уровня журнала отдельного пакета в log4j? Это ошибка в экосистеме L4J? Или это предполагаемое поведение, и есть другой способ решить эту проблему?