Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-将日志中的相同异常分组_Java_Logging_Log4j - Fatal编程技术网

Java-将日志中的相同异常分组

Java-将日志中的相同异常分组,java,logging,log4j,Java,Logging,Log4j,是否有具有异常分组功能的日志记录解决方案?我想要实现的是,当一些异常被记录时,例如在10秒内记录100次,我不想记录100个堆栈跟踪。我想记录一些类似于RuntimeException被抛出100次:这里是单堆栈跟踪。最好将它与log4j集成 Ofc有一个选项可以创建一些包含异常队列的日志外观,但可能已经实现了一些功能。请查看此功能,然后发送到电子邮件地址 解决方案基本上是一种使用将日志保存到内存中的方法。当达到阈值或系统关闭时,处理程序将刷新缓冲区 该解决方案基于七月(java.util.lo

是否有具有异常分组功能的日志记录解决方案?我想要实现的是,当一些异常被记录时,例如在10秒内记录100次,我不想记录100个堆栈跟踪。我想记录一些类似于
RuntimeException被抛出100次:这里是单堆栈跟踪
。最好将它与
log4j
集成


Ofc有一个选项可以创建一些包含异常队列的日志外观,但可能已经实现了一些功能。

请查看此功能,然后发送到电子邮件地址

解决方案基本上是一种使用将日志保存到内存中的方法。当达到阈值或系统关闭时,处理程序将刷新缓冲区


该解决方案基于七月(java.util.logging),但它可以作为您构建自己的log4j解决方案的基础,只需稍作修改。这对我很有效。希望有帮助。

只是想一想:您如何处理由不同线程引起的日志交错?e、 g.如果一个线程记录X很多次,而另一个线程记录Y很多次,那么最终可能会出现X。我在以前的项目中做了类似的事情,第三方日志框架不是解决方案(我们实现了自己的分组机制)@xav yes,ofc将出现一些并发问题。在我的例子中,解决方案可以是同步的日志记录方法/并发集合,用于存储带有序列异常或类似smth的状态。所以xyxy->xx3yx3。请您再多介绍一下分组机制是如何实现的好吗?我没有谈到这种并发性。对于log4j来说,同时记录两个线程就可以了。在代码中使用
synchronized
对我提到的问题毫无帮助。我讨论过这种情况:一个线程TX记录X,然后两秒钟之后,另一个线程TY记录Y,然后两秒钟之后,线程TX记录X,然后两秒钟之后,线程TY记录Y。。。。因此,您的日志文件将包含X Y X Y。。。(除非每个线程有一个日志文件,这会很奇怪)使用logstash来读取日志怎么样,您可以在logstash中编写过滤器进行分组,然后将新日志写回另一个文件。昨天有人创建了一个功能请求,以在log4j2中实现这一点:(通过类似的问题)