【问题标题】:Controlling log file location via JNDI in Spring?在 Spring 中通过 JNDI 控制日志文件位置?
【发布时间】:2011-05-14 03:05:15
【问题描述】:

我有一个使用 SLF4J 日志记录外观的 Java Web 应用程序。迄今为止,我们在下面使用 Log4J 实现(尽管我们正在考虑切换到 Logback)。 Log4J 目前是通过 log4j.xml 配置文件配置的,该配置文件位于我们的类路径的根目录中。

无论如何,我们使用 JNDI 来配置应用程序的其他方面,因此我非常熟悉如何设置它并将 JNDI 中的字符串拉入 Spring 配置文件。

但是,我不知道如何从 Spring 配置文件中创建 Log4J appender。更好的是,可以通过 Spring 完全配置 Log4J 并完全跳过 log4j.xml 配置文件吗?我希望我不必以编程方式执行此操作。

我找到了一个名为 Log4jWebConfigurer 的 Spring 类,但这要求 WAR 运行爆炸(如果我能提供帮助,则不希望这样),并且日志文件驻留在 web-app 目录中(绝对不要想要那个)。

【问题讨论】:

    标签: java xml spring logging log4j


    【解决方案1】:

    首先通过JNDI获取主目录:

    <jee:jndi-lookup id="myAppHome" jndi-name="myAppHome" />
    

    然后按以下方式在 Spring 表达式语言语句中使用该 bean:

    <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
        <property name="targetMethod" value="initLogging" />
        <property name="arguments">
            <list>
                <value>#{ myAppHome + '/conf/log4j.xml'}</value>
            </list>
        </property>
    </bean>
    

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      相关资源
      最近更新 更多