1

我们正在分发一个应用程序,该应用程序作为一组 WAR 文件部署在各个客户站点的各种 WebLogic 服务器(9、10 和 11)中。这些应用程序使用 commons-logging 和 log4j。除了在我们的应用程序没有生成日志的特定站点之外,它在任何地方都可以完美运行。该站点位于 11g 上,并安装了许多其他 Oracle 软件(BPEL、OSB 等)

在我们的代码中,我们使用:

public class Foo {

private final static Log log = LogFactory.getLog(Foo.class);

    public void bar () {
        log.trace("bar called");
        ...

由于我们想让客户调整他们的日志配置,我们在服务器 CLASSPATH 中有一个配置文件夹:

CLASSPATH=/opt/app/domain_foo/foo_config/:....

在该文件夹中,有两个日志文件 commons-logging.properties:

org.apache.commons.logging.Log org.apache.commons.logging.impl.Log4JLogger

和 log4j.properties:(这是一个具有相同问题的简化文件,实际文件包含 5 个具有各种参数的记录器)

log4j.rootLogger=INFO, fileApp

# File appender
log4j.appender.fileApp=org.apache.log4j.RollingFileAppender
log4j.appender.fileApp.file=fooapp.log
log4j.appender.fileApp.maxFileSize=10240KB
log4j.appender.fileApp.maxBackupIndex=5
log4j.appender.fileApp.append=true
log4j.appender.fileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.fileApp.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} %-5p %-70.70C %m%n

log4j.logger.be.foo=DEBUG

文件 fooapp.log 已创建(因此它能够找到属性文件)但为空。我试图检查 Weblogic 中的日志设置,但它们在工作和不工作的服务器上似乎是相同的。我将 CLASSPATH 复制到我的服务器,它仍然可以正常工作。

我真的不知道该去哪里找了。有任何想法吗 ?

4

1 回答 1

0

这有点棘手,但答案是在名为:APPLICATIONS_DIRECTORY 的环境中,它应该指向 APPLICATIONS_DIRECTORY/fooapp.log 应该所在的路径。您可以从 System.getenv("APPLICATIONS_DIRECTORY"); 获取目录位置

于 2014-02-26T01:00:27.550 回答