Я использую sbt-native-packager с экспериментальным архетипом Java Server. Я пытаюсь определить обычный способ доступа к моим файлам журналов, и мне интересно, знает ли кто-нибудь об общем подходе здесь. Поскольку я использую архетип Java Server, я получаю приложение symlink/var/log/$ app -> install_dir/$ app/log, но он чувствует себя немного грязным и менее переносимым, чтобы иметь только log4j open/var/log/$ app/error.log напрямую.Как создать предсказуемые местоположения регистрации с помощью sbt-native-packager
[Update]
Я в конечном итоге создать объект с информацией о пути времени выполнения:
object MakaraPaths {
def getLogPath = new File(getJarPath, "../logs").getPath
def getConfigPath = new File(getJarPath, "../conf").getPath
def getJarPath = {
val regex = new Regex("(/.+/)*")
val jarPath = Makara.getClass.getProtectionDomain.getCodeSource.getLocation.getPath
(regex findAllIn jarPath).mkString("")
}
}
В моем основном методе, я установил свойство системы на основе новых MakaraPaths объект:
System.setProperty("logPath", MakaraPaths.getLogPath)
Я также использовал это для моего файла конфигурации:
val config = ConfigFactory.parseFile(new File(MakaraPaths.getConfigPath, "application.conf"))
В конечном счете, чтобы загрузить файл журнала, я использовал поиск системного свойства:
<RollingFile name="fileAppender" fileName="${sys:logPath}/server.log" filePattern="${sys:logPath}/server_%d{yyMMdd}.log">
Это получает меня большую часть пути, где мне нужно быть. Он не полностью переносимый, но он технически поддерживает мой прецедент. (Развертывание до Ubuntu)
Я изменил свой log4j2.xml для использования относительного пути. Однако это создает только папку в $ whatever_folder_im_in /../ журналы. sbt-native-packager создает приложение symlink/usr/bin/$ app ->/usr/share/$ app/bin/$, которое позволяет запускать экземпляр из любой папки, поэтому я просто получаю папку ../logs по всему система. Похоже, мне нужно сделать еще несколько исследований по конфигурациям log4j2, например, найти фактическое местоположение файла класса, вызывающего регистратор, если это возможно. –
Brian
Вы используете выскочку или систему V? – kardapoltsev
Я использую метод Upstart по умолчанию. Нет загрузчика сервера. Кроме того, может быть стоит отметить, что я использую debian-упаковку с debian: package-bin. – Brian