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
пользователю, под которым запускается ваше приложение, и не разрешайте чтение / запись этого каталога в мире.