Использование свойств JNDI для конфигурации tinylog - PullRequest
1 голос
/ 17 мая 2019

Мы используем свойство JNDI (устанавливается в веб-сервере Tomcat) для определения стадии (DEV / TEST / QA / PRD) для настройки некоторых деталей приложения.

Теперь мы хотим заменить домашний напиток- ведение журнала с помощью внешнего инструмента и желание попробовать tinylog.Но мы задаемся вопросом, можно ли считывать переменные окружения из контекста JNDI для настройки параметров tinylog?

В документации ничего не говорится о поисках JNDI.Возможно, конфигурация на основе Java может быть решением.Но как насчет декларативной текстовой конфигурации?

Любой совет ценится!Спасибо!

1 Ответ

0 голосов
/ 21 мая 2019

tinylog - это универсальная библиотека журналирования для всех видов приложений Java.Для поиска по контексту отсутствует встроенная поддержка, так как это особая функция Java EE.Однако вы можете загрузить свою собственную конфигурацию tinylog при запуске через ServletContextListener.

@WebListener
public class LoggingInitializer implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {
        try {
            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
            String stage = (String) new InitialContext().lookup("java:comp/env/stage");
            String file = "tinylog_" + stage + ".properties";

            Properties configuration = new Properties();
            try (InputStream stream = classLoader.getResourceAsStream(file)) {
                configuration.load(stream);
            }

            Configuration.replace((Map) configuration);
        } catch (IOException | NamingException ex) {
            Logger.error(ex, "Failed to load tinylog configuration");
        }
    }

    public void contextDestroyed(ServletContextEvent event) { }

}

Этап может быть задан как переменная среды в вашем context.xml:

<Context>
    <Environment name="stage" value="PROD" type="java.lang.String" />
    <!-- Other Settings -->
</Context>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...