我有一个akka应用程序,我希望打包为uberjar。如果我打包我的应用程序,logback.xml会出现在jar的根目录中,但是当我启动我的应用程序时,我在配置日志中出现错误,因为" URL x不是类型文件!"其中x是一个看起来像
的网址jar:file:/path/to/jar!logback.xml
这是因为归档文件已归档,因此无法作为文件进行访问,而这正是logback所期望的。我对此很好,因为logback配置不应该在jar中使用,因为它可能会导致冲突。我想要做的是打包并运行我的应用程序,在运行时传入logback.xml,例如
java -Dlogback.configurationFile=/full/path/to/logback.xml -jar myapplication.jar
当像这样运行时,日志记录配置会回退到默认状态,我最终会在我的控制台中显示actor日志(当通过maven运行时,它都按预期工作)。告诉我我错过了什么:)
答案 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