Я использую sbt-native-packager с экспериментальным архетипом Java Server. Я пытаюсь определить обычный способ доступа к моим файлам журнала, и мне интересно, знает ли кто-нибудь об общем подходе здесь. Поскольку я использую архетип Java Server, я получаю символическую ссылку /var/log/$app -> install_dir/$app/log, но это кажется немного грязным и менее переносимым, если просто открыть log4j /var/log/$ app/error.log напрямую.
[Обновлять]
В итоге я создал объект с информацией о пути во время выполнения:
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)