如何使用sbt-native-packager创建可预测的日志记录位置

时间:2014-01-07 21:22:42

标签: sbt-native-packager

我正在使用带有实验性Java Server原型的sbt-native-packager。我试图找出一种访问我的日志文件的传统方式,我想知道是否有人知道这里的常见方法。由于我使用的是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("")
  }
}

在我的main方法中,我基于新的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)

1 个答案:

答案 0 :(得分:2)

您可以在log4j配置中使用相对路径。只需在logs / filename.log中写入日志即可。 在安装期间,符号链接install_dir / $ app / logs - &gt;将创建/ var / log / $ app,所有日志将写入/var/log/$app/filename.log