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

每对logger.info/debug/warn()调用这么多次,才使用log4j日志记录一次

符渊
2023-03-14

我有一个场景,一个特定的日志消息可能会被打印很多次(可能是数百万次)。例如,如果我们记录(使用logger.warn()方法)每个缺少字段的记录,那么我们可能会记录很多--在输入文件有很多缺少字段的记录的情况下(例如,HDFS上的大文件)。这会很快填满磁盘空间。

为了避免这种情况,我正在尝试为每1000个缺少字段的记录(例如)记录一次。我可以在log4j包之外实现所有这些逻辑,但我想知道是否有更干净的方法来实现这些。理想情况下,所有这些逻辑都将进入log4j代码。

共有1个答案

蒋畅
2023-03-14

Log4J不能开箱即用。但是,您可以尝试编写自己的侦听器。如果您希望切换到Logback作为您的日志框架,则有一个名为DuplicateMessageFilter的筛选器,该筛选器在特定的重复之后丢弃消息。您确实应该考虑这一点,因为大量的日志记录肯定会影响您的性能。Logback的配置方式与Log4J相同,并且开箱即用地支持SLF4J。

 类似资料:
  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 我下载了kafka-clients-0.9.0.0。jar与maven一起使用,我希望我会看到类似于Kafka日志链接中的日志记录 然而,我不知道为什么我没有得到任何日志记录,即使我设置了引导。purpuse上的服务器错误,但它只是在没有发出任何警告的情况下被卡住了。我添加了几行代码以使用log4j打印到一个文件中,这似乎是可行的,但不知道为什么Kafka不能将事件记录到log4j中。 请注意,s

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

  • 我一直在尝试关闭石英的恼人的调试日志记录。我使用log4j作为日志框架,我已经尝试将这一行添加到lg4j属性文件中 我仍然收到大量的调试日志消息 如何关闭此功能? 编辑。我已经将我的配置移动到xml文件...但仍然遇到同样烦人的问题 编辑2。。。这是我的pom。xml文件(有趣的部分) 类路径中的EDIT3 jar

  • 我正在使用python日志记录我的程序。所有日志当前都打印在stdout上,但我希望使用POST REST调用将它们发送到远程日志服务器。当前,我的程序发出了多个日志记录的POST请求。有没有更优化的方式发送日志,我可以捆绑多个日志在一个POST请求?

  • 问题内容: 我正在使用Python日志记录,由于某种原因,我的所有消息都出现两次。 我有一个配置日志记录的模块: 稍后,我调用此方法来配置日志记录: 然后,在buy_ham模块中,我将调用: 由于某种原因,所有消息都出现两次。我注释掉其中一个流处理程序,还是一样。有点奇怪,不确定为什么会这样…大声笑。假设我错过了一些显而易见的事情。 干杯,维克多 问题答案: 您正在调用两次(也许使用的方法):将返