我正在使用带有实验性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)
答案 0 :(得分:2)
您可以在log4j配置中使用相对路径。只需在logs / filename.log中写入日志即可。 在安装期间,符号链接install_dir / $ app / logs - &gt;将创建/ var / log / $ app,所有日志将写入/var/log/$app/filename.log