Centos 6: Java-приложение не регистрируется в var/log

У нас есть машина CentOs6, которая недавно была запущена в OpenStack. Развертывание приложения наших компаний состоит из создания файла war и его размещения в / usr / share / tomcat / webapps. Мы развернули его на других машинах CentOs6, которые были созданы около месяца назад, и он прекрасно регистрирует журналы приложений в /var/log/myAppName/specifiLogFile.log. Это только на новых машинах, где это не работает (обратите внимание, что старые машины, как предполагается, имеют ту же конфигурацию).

Я считаю, что мы сузили его до самого сервера, а не приложения. Другие проекты, для которых мы создаем военные файлы, которые развернуты в новых блоках, также должны войти в /var/log/myOtherApp/otherLogFile.log, но не делать этого.

Мне интересно, есть ли где-нибудь, где я могу посмотреть, почему журналы приложений не генерируются в / var / log /... Что могло бы вызвать это?

Разрешения 660 для каталога журнала приложения, и правильный пользователь имеет доступ для чтения и записи.

Что я пробовал:

Включение отладки в logback и исследование следующих журналов на наличие проблем: tomcat / logs / catalina.out, tomcat / logs / localhost.2016-06-05.log, / var / log / messages

Единственным другим отличием было то, что наши старые приложения работали на Java 7, а новые блоки CentO должны быть на 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"])

1 ответ

Предполагая, что ваша конфигурация логирования работает нормально, я предполагаю, что это проблема с разрешениями:

каталог /var/log на вашем сервере, безусловно, будет существовать, однако убедитесь, что существует подкаталог журналов вашего приложения (или у вашего приложения есть разрешение на создание этого подкаталога).

Чтобы проверить эту теорию, я бы убедиться, что каталог /var/log/yourAppName существует, а затем запустить sudo chmod 666 /var/log/yourAppName, После этого перезапустите приложение и посмотрите, создает ли оно файлы журнала в этом каталоге.

Если это поможет, вы можете пересмотреть это решение и установить владельца /var/log/yourAppName пользователю, под которым запускается ваше приложение, и не разрешайте чтение / запись этого каталога в мире.

Другие вопросы по тегам