【问题标题】:Usage of JNDI properties for tinylog configuration使用 JNDI 属性进行 tinylog 配置
【发布时间】:2019-05-17 12:13:56
【问题描述】:

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

现在我们想用一个外部工具替换 homebrew-logging,并想试试 tinylog。但是我们想知道是否可以从 JNDI 上下文中读取环境变量来配置 tinylog 设置?

文档没有说明 JNDI 查找。也许基于 Java 的配置可能是解决方案。但是声明性的基于文本的配置呢?

任何建议appriciated! 谢谢!

【问题讨论】:

  • 哪些属性取决于舞台?每个阶段都有不同的属性文件,还是通过 Java 配置 tinylog?你使用的是 tinylog 1.x 还是 2.x?
  • 您好,马丁,感谢您的回复。到目前为止,我们根本不使用 tinylog,但我们认为它可能是其他“大日志”(如 lockback/sl4j/等)的有价值的替代品。我想我们会测试 tinylog 2。第一个稳定版本 2.0 什么时候发布?我们希望在 WAR 文件中部署所有属性,并且我们曾经调用服务器以检测应用程序将运行的阶段。我们想要加载一个依赖于阶段的配置,它可能是每个阶段的不同文件,或者在配置中使用开关。你能提出一个解决方案吗,一种微型日志方式?
  • tinylog 2.0 的第一个功能完整候选版本已经在进行中。我希望在几个月后发布 tinylog 2.0 的最终版本。

标签: tinylog


【解决方案1】:

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

@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>

【讨论】:

  • 您好,马丁,感谢您的回复。您已回答所有问题。
猜你喜欢
  • 2011-01-04
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2018-03-02
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多