web项目中log4j2的log4j-web包如果不添加,会影响哪些日志输出?

发布于 2022-09-11 18:48:17 字数 86 浏览 14 评论 0

如题
Springmvc的web项目,使用slf4j+log4j2做日志输出,如果maven依赖中不加入log4j-web包,会影响哪些日志的输出格式?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱已欠费 2022-09-18 18:48:17

官方文档:https://logging.apache.org/lo...

在Java EE Web应用程序中使用Log4j或任何其他日志记录框架时,您必须特别小心。 当容器关闭或取消部署Web应用程序时,正确清理日志资源(关闭数据库连接,关闭文件等)非常重要。 由于Web应用程序中类加载器的性质,无法通过常规方式清除Log4j资源。 当Web应用程序部署并在Web应用程序取消部署时“关闭”时,Log4j必须“启动”。 它的工作原理取决于您的应用程序是Servlet 3.0还是更新版本或Servlet 2.5 Web应用程序。

在任何一种情况下,您都需要将log4j-web模块添加到您的部署中,详见Maven,Ivy和Gradle Artifacts手册页。

为避免出现问题,当包含log4j-web jar时,将自动禁用Log4j关闭挂钩。

上面是 log4j 官方的文档,上文的大意就是 Log4j 默认会用一个 Runtime.getRuntime().addShutdownHook 钩子用来在程序关闭时释放资源,可见源码部分
,由于 web 服务比较特殊,避免像 kill -9 这种不触发钩子,可以使用 log4j-web 这个jar,它是利用的 Servlet 的生命周期来进行 log4j 的配置和资源的释放。

感谢朋友的问题,通过该问题我也学习了不少。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文