0

我们有一台最近在 OpenStack 中启动的 CentOs6 机器。我们公司应用程序的部署包括构建一个 war 文件并将其放置在 /usr/share/tomcat/webapps 中。我们已经将它部署到大约一个月前创建的其他 CentOs6 机器上,它将应用程序日志记录到/var/log/myAppName/specifiLogFile.log就好了。它仅在不工作的新机器上(请注意假定具有相同配置的旧机器)。

我相信我们已经将范围缩小到服务器本身而不是应用程序。我们为其构建战争文件的其他项目,部署到新盒子也应该记录到/var/log/myOtherApp/otherLogFile.log,但不要。

我想知道是否有任何地方可以查看为什么没有在/var/log/ 中生成应用程序日志... 是什么原因导致的?

应用程序日志目录的权限为 660,并且正确的用户具有读写权限。

我试过的:

在 logback 中启用调试并调查以下日志的问题: tomcat/logs/catalina.outtomcat/logs/localhost.2016-06-05.log/var/log/messages

唯一的另一个区别是我们的旧应用程序运行的是 Java 7,而新的 CentOs 机器应该在 Java 8 上。即使升级到 Java 8,问题仍然存在。

编辑: 包括我的 logback 配置,但我必须说这个配置在我大约一个月前创建的服务器上运行良好......我确信这与新服务器本身的一些配置有关。

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.rolling.RollingFileAppender
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy
import ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP

import static ch.qos.logback.classic.Level.DEBUG
import static ch.qos.logback.classic.Level.WARN
import static ch.qos.logback.classic.Level.INFO

scan("30 seconds")

appender("ROLLING", RollingFileAppender) {
  file = "/var/log/myApp/myApp.log"

  encoder(PatternLayoutEncoder) {
    pattern = "%date %level [%thread] %logger{10} [%file:%line] %msg%n"
  }

  rollingPolicy(TimeBasedRollingPolicy){
    // Rollover daily
    fileNamePattern = "/var/log/myApp/myApp%d{yyyy-MM-dd}.log.gz"

    // Delete the archived files older than 10 days
    maxHistory = 10
  }

}

root(DEBUG, ["ROLLING"])
4

1 回答 1

1

假设您的日志记录配置工作正常,我猜这是权限问题:

您服务器上的目录/var/log肯定存在,但请确保您的应用程序记录的子目录存在(或您的应用程序有权创建该子目录)。

为了测试该理论,我将确保该目录/var/log/yourAppName存在,然后运行sudo chmod 666 /var/log/yourAppName​​. 完成后,重新启动应用程序并查看它是否在该目录中创建日志文件。

如果这有帮助,您可能需要重新访问该解决方案并将所有者设置为/var/log/yourAppName您的应用程序运行的用户,并且不允许将该目录读/写到世界。

于 2016-06-05T17:44:31.510 回答