Jetty 9用于嵌入式服务器,一切运行良好。剩下的一件事就是记录问题。
在此之前,mvn:jetty-run带有自己的日志记录设置并记录到控制台。这有利于发展。在生产环境中,我们需要更特别的东西。
目前在初创公司SLF4J抱怨说,没有绑定可用,所以我们可以自由选择。
这就是我们要归档的内容:
我们使用命令行参数'-production'区分生产模式和非生产模式。
由于jetty服务器是嵌入式的,我希望有一个解决方案,我们可以完全配置记录器,而无需管理xml或属性文件,使日志配置方面脱离部署过程。
那么我们有什么选择?我们如何以最佳方式做到这一点?
更新:似乎退回是可行的方法。它支持日志文件轮换,也可以使用控制台输出。剩下的难题是如何以编程方式执行此操作而无需其他文件。
答案 0 :(得分:3)
这里有数百个配置选项。
在此处选择适当的配置之前,您需要了解有关应用程序的一些信息。
如何从代码中发出日志记录事件?码头服务器?和所有第三方图书馆?
然后你想回答一下,你想要处理哪些日志框架来处理日志架构的输出(到磁盘和控制台)?
Jetty记录了这一点: http://www.eclipse.org/jetty/documentation/current/example-logging-logback-centralized.html
是的,该文档不适用于嵌入模式,但它仍然相关。
您所需的日志jar文件:
基本api jar:
slf4j-api.jar
(必填,无论您在下面选择什么)日志捕获罐子:
(在这里挑选[0..n]罐子)
log4j-over-slf4j.jar
(slf4j处理log4j事件)jul-to-slf4j.jar
(slf4j处理java.util.logging事件)jcl-over-slf4j.jar
(slf4j处理jakarta commons-logging事件)日志输出jar:
仅选择以下输出罐中的一个:
slf4j-simple.jar
(这是一个超级简单的日志记录实现,不适合制作)logback-classic.jar
(slf4j自己的输出日志框架)
logback-core.jar
slf4j-log4j12.jar
(将slf4j事件路由到log4j进行处理)
log4j.jar
log4j-over-slf4j.jar
slf4j-jdk14.jar
(将slf4j事件路由到java.util.logging进行处理)
jul-to-slf4j.jar
slf4j-nop.jar
(将slf4j事件路由到无处,默默地丢弃它们)slf4j-jcl.jar
(将slf4j事件路由到jakarta commons-logging)
commons-logging.jar
以及您选择的commons-logging实现。jcl-over-slf4j.jar
全部配置:
请务必阅读每个罐子上的slf4j manual,因为有时您可能需要了解一些额外的设置细节。
对于您描述的情况,最合适的输出jar将是logback-classic.jar
或slf4j-log4j12.jar
。至于配置输出,您需要依赖这些库提供的文档。
答案 1 :(得分:1)
所以最后这里是完整的图片。
以编程方式完成所有日志记录配置后,请在此处进行说明:http://logback.qos.ch/manual/configuration.html#joranDirectly
我正如Joakim所述使用logback API。一旦您学会了如何使用JoranConfigurator对象以编程方式对其进行编程,一切都非常简单。玩它,你得到了图片。
我设法完成了手头的所有任务。
感谢Joakim的帮助。我错过了JoranConfigurator的东西。谢谢!
<强>更新强>
我使用了StringReader并将xml配置文件直接嵌入到Logging配置类中。这样我就不必按预期管理其他文件和日志记录。