diff --git a/src/main/scala/com/typesafe/sbt/packager/GenericPackageSettings.scala b/src/main/scala/com/typesafe/sbt/packager/GenericPackageSettings.scala index 455813b10..7ff7208e8 100644 --- a/src/main/scala/com/typesafe/sbt/packager/GenericPackageSettings.scala +++ b/src/main/scala/com/typesafe/sbt/packager/GenericPackageSettings.scala @@ -63,6 +63,7 @@ trait GenericPackageSettings // Default place to install code. defaultLinuxInstallLocation := "/usr/share", + defaultLinuxLogsLocation := "/var/log", // First we look at the src/linux files linuxPackageMappings <++= (sourceDirectory in Linux) map { dir => diff --git a/src/main/scala/com/typesafe/sbt/packager/Keys.scala b/src/main/scala/com/typesafe/sbt/packager/Keys.scala index 9644686f4..8cb7ad1ac 100644 --- a/src/main/scala/com/typesafe/sbt/packager/Keys.scala +++ b/src/main/scala/com/typesafe/sbt/packager/Keys.scala @@ -29,4 +29,5 @@ object Keys extends linux.Keys | APP_DEFINES - the defines to go into the app | """.stripMargin) val defaultLinuxInstallLocation = SettingKey[String]("defaultLinuxInstallLocation", "The location where we will install generic linux packages.") + val defaultLinuxLogsLocation = SettingKey[String]("defaultLinuxLogsLocation", "The location where application logs will be stored.") } \ No newline at end of file diff --git a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala index 709f686cb..41daa8a7d 100644 --- a/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala +++ b/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala @@ -62,9 +62,13 @@ object JavaServerAppPackaging { s <- script.toSeq } yield LinuxPackageMapping(Seq(s -> path)).withPerms(permissions) }, - // TODO the /var/log should be generalized like defaultLinuxInstallLocation - linuxPackageMappings in Debian <+= (normalizedName) map { - name => packageTemplateMapping("/var/log/" + name)() + // TODO should we specify daemonGroup in configs? + linuxPackageMappings in Debian <+= (normalizedName, defaultLinuxLogsLocation, target in Debian, daemonUser in Debian) map { + (name, logsDir, target, user) => + // create empty var/log directory + val d = target / logsDir + d.mkdirs() + LinuxPackageMapping(Seq(d -> s"$logsDir/$name"), LinuxFileMetaData(user, user)) }, linuxPackageSymlinks in Debian <+= (normalizedName, defaultLinuxInstallLocation) map { (name, install) => LinuxSymlink(install + "/" + name + "/logs", "/var/log/" + name)