当前位置: 首页 > 知识库问答 >
问题:

使用无垃圾Log4j在Webapp中进行参数化日志记录

融宏伟
2023-03-14

我在WebApp中使用log4j,并验证enable_threadlocals字段为false。

当我通过以下方式登录时:

  1. log.info(“带有参数{}的log语句”,someString);
  2. log.info(带有级联“+somestring”的log语句);
 "// storing JDK classes in ThreadLocals does not cause memory leaks in web apps, so this is okay"

PS:当webApp重新启动时没有问题。重新启动时,所有内容都清除了。但是当webApp连续运行几天,threadLocals的大小不断增加时,这是一个问题。

共有1个答案

祖波光
2023-03-14

您似乎遇到了一个bug:https://issues.apache.org/jira/browse/log4j2-1417

unbox类在静态ThreadLocal字段中存储一个非JDK类(unbox$state)。

这可能会导致在应用程序之间共享线程池的容器中出现内存泄漏。

 类似资料:
  • 问题内容: 我正在使用的Web应用程序偶尔会为某些用户带来数据完整性问题。我想打开跟踪级别的日志记录,但是由于我们每秒要处理100个请求,因此每个日志记录都是不可能的。 log4j是否可以有条件地记录日志?换句话说,我希望仅在特定用户发出请求时才能获得跟踪日志。由于我事先不知道哪些用户会受到影响,因此我无法简单地临时对用户名进行硬编码。 编辑: 我想我需要更清楚一点。我可以轻松地在日志语句中添加条

  • 问题内容: 我已经将一个Web应用程序部署到服务器上。我的应用程序使用和。但是,并非所有日志记录消息都已写入文件。 在我的课堂上,我有: 我的文件在本地计算机上运行良好,并且已正确部署。 我看到正在写入的应用程序生成的错误消息没有写入我的。由于输出模式的格式与我的模式不同,因此看起来的日志消息来自其他日志框架。我在中看到的日志记录如下: 我的log4j模式是这样的: 一些日志记录出现在我的文件日志

  • 嗯,这个例子看起来很不完整,因为它从来没有提到关键字。通过查看源代码,我看到了一个示例(测试?)它在log4j.xml中使用了,但对如何使用或调试实际的记录器没有太多解释。 关于如何实际使用/实现ApplicationInsightsAppender for Log4J,有没有人有任何指示? 以下是github https://github.com/microsoft/applicationins

  • 我正在使用docx4j从一个模板创建一些docx文件。但是在生成它的时候,它一直在生成一些烦人的日志。 这是我的log4j.properties文件

  • 在我的项目中,我使用slf4j+log4j进行日志记录。我刚接触java,正在尝试了解日志记录是如何工作的。如果我想使用log4j以外的其他日志框架,比如java.util.logging,那么我就不需要更改任何代码,因为我使用的是SLF4J。我只需要移除log4j的jar,并添加java.util.logging的二进制。我试着了解当我们不改变任何代码时,它是如何工作的。如果问题不清楚,请让我知

  • 我正在做一个Java/J2EE项目,其中有几个Web应用程序。我想在一些webapps中介绍log4j。所以我添加了log4j-1.2。WEB-INF\lib中的16.jar和log4j。WEB-INF\classes中的属性 结果我得到一个NoClassDefFoundError: 当我试图直接在Tomcat内部安装log4j时,我也会遇到同样的错误。(我已经在tomcat/lib等中添加了pr