【问题标题】:env:CATALINA_BASE not resolving in Tomcat 8.0 / log4jenv:CATALINA_BASE 无法在 Tomcat 8.0 / log4j 中解析
【发布时间】:2015-07-10 01:04:39
【问题描述】:

我在 Windows 上的 Tomcat 8.0 中有一个相对简单的 log4j 配置

<Configuration>
    <Appenders>
        <File name="FileLog" fileName="${env:CATALINA_BASE}/logs/pidashboard.log">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="FileLog"/>
        </Root>
    </Loggers>
</Configuration>

在我的开发机器上,文件名被解析并且日志被适当地创建。在我的部署机器上,我收到一条错误消息,说它无法创建名为 - 字面意思 - ${env:CATALINA_BASE}/logs/pidashboard.log 的文件,如果我将行更改为 CATALINA_BASE 解析到的硬编码路径,则日志会正确创建。

这些是 Tomcat 的相当普通的安装,所以我不确定是什么导致了差异。我的开发机器运行的是 Windows 10,而我的生产机器运行的是 Windows Server 2008,但我不认为这会影响这个特定的场景。

【问题讨论】:

    标签: java windows tomcat log4j


    【解决方案1】:

    如果你使用Tomcat的Windows服务启动Tomcat,那么环境变量CATALINA_BASE将不会被设置,所以它是不可用的。尝试使用系统属性catalina.base 而不是环境变量CATALINA_BASE。

    【讨论】:

    • 这似乎不起作用....我在文字目录 ${catalina.base} 中有一个日志文件名,所以属性的解析似乎不像服务?我现在使用一个相对目录,它将日志放在正确的位置进行部署(作为服务),但在我的开发机器的 bin 目录中创建一个 log/pidataboard.log。现在这已经足够好了,但肯定有一种方法可以在这两种情况下都起作用吗?
    • 所以你在 log4j.xml 中尝试了${catalina.base}?唔。我从未使用过 log4j 的 XML 配置,但我知道这适用于 .properties-file 配置。这显然是supposed to work。
    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多