如何将我的logback.xml作为系统属性传递给我的akka​​应用程序?

时间:2015-02-25 20:08:25

标签: scala maven jar akka logback

我有一个akka应用程序,我希望打包为uberjar。如果我打包我的应用程序,logback.xml会出现在jar的根目录中,但是当我启动我的应用程序时,我在配置日志中出现错误,因为" URL x不是类型文件!"其中x是一个看起来像

的网址
jar:file:/path/to/jar!logback.xml

(此处出现错误https://github.com/qos-ch/logback/blob/master/logback-core/src/main/java/ch/qos/logback/core/joran/spi/ConfigurationWatchList.java#L90

这是因为归档文件已归档,因此无法作为文件进行访问,而这正是logback所期望的。我对此很好,因为logback配置不应该在jar中使用,因为它可能会导致冲突。我想要做的是打包并运行我的应用程序,在运行时传入logback.xml,例如

java -Dlogback.configurationFile=/full/path/to/logback.xml -jar myapplication.jar

当像这样运行时,日志记录配置会回退到默认状态,我最终会在我的控制台中显示actor日志(当通过maven运行时,它都按预期工作)。告诉我我错过了什么:)

1 个答案:

答案 0 :(得分:1)

是的,将logback.xml文件打包到你的胖罐子里并不是一个好主意。它的目的是让它在运行时配置。如果您使用sbt来组装jar,则可以指定目录&通过添加到unmanagedJars来不包含的文件。例如:

unmanagedJars in Compile <++= baseDirectory map { dir => (dir ** "logback.xml").classpath }

然后你应该能够在运行时通过在-cp(classpath)或-jar之后包含它来传递它。例如:

java -jar -Dlogback.configurationFile=/full/path/to/logback.xml myapplication.jar