首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将JNDI属性用于tinylog配置

将JNDI属性用于tinylog配置
EN

Stack Overflow用户
提问于 2019-05-17 20:13:56
回答 1查看 71关注 0票数 1

我们使用JNDI属性(在Tomcat We服务器中设置)来确定阶段(DEV/TEST/QA/PRD),以便配置一些应用程序细节。

现在,我们想用一个外部工具替换自制的日志记录,并想尝试一下tinylog。但是我们想知道是否可以从JNDI上下文中读取环境变量来配置tinylog设置?

文档中对JNDI查找只字不提。也许基于Java的配置可能是解决方案。但是基于文本的声明性配置又如何呢?

任何建议都可以接受!谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 05:44:27

tinylog是一个适用于所有Java应用程序的通用日志库。没有对上下文查找的本地支持,因为它是特定的Java EE特性。但是,您可以在启动时通过ServletContextListener加载您的自定义tinylog配置。

代码语言:javascript
复制
@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中的环境变量:

代码语言:javascript
复制
<Context>
    <Environment name="stage" value="PROD" type="java.lang.String" />
    <!-- Other Settings -->
</Context>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56186203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档