0

我在免费主机上有一个 JBoss EAP 服务器,但时不时会发生一种情况,使应用程序开始在每个请求上抛出异常,并带有冗长的堆栈跟踪。这导致日志每天达到数十 MB,并且在一段时间后,主机的磁盘空间不足。

我想过滤异常。准确地说,我想要一些可以接受异常的东西,并告诉我是否已经看到了相同的异常。应用广泛。可能是缓存过期。

除了我自己使用地图并检查异常情况之外,我还有哪些选择?

我记得我已经看到过一些RepeatedExceptionsHandler我使用的 Log4j 之类的东西,或者它可能是 Hibernate,但在快速谷歌搜索中找不到它。

4

3 回答 3

1

我也用日志文件填满了我的磁盘,所以我感受到了你的痛苦!我的第一直觉确实是 RollingFileAppender 解决方案的一个版本,但从长远来看,最终对我有用的东西实际上是完全卸载了这个问题。我使用了一项名为Appygram的服务(诚然,我也参与了一项服务),您可以将异常发送到该服务。您可以根据需要格式化异常消息,并且它具有基于 API 密钥的内置重复检测功能,因此您可以获得应用程序范围的检查。

就个人而言,我使用 HTML 格式化我的异常以使其更易于阅读,因为我发送大量数据,但您可以发送任何您想要的。还有一个 Web 界面供您浏览收到的异常,或者您可以将它们转发到电子邮件或任何其他 Web 服务。

无论如何,如果你这样做,你可以防止你的日志被填满,因为信息是从你的服务器上出来的,而且你不会因为同样的异常而反复被屠杀。如果您最终确实特别检查了 Appygram,请告诉我,我可以为您指出一些有用的 Java 库来帮助您入门。

于 2013-07-23T04:34:30.437 回答
0

您可以使用 RollingFileAppender 并正确配置它。您需要提供最大文件大小和要保留作为备份的文件数量。这不会帮助您过滤异常,但可以帮助您避免磁盘空间不足。

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/RollingFileAppender.html

有关此类配置的示例,请参阅http://logging.apache.org/log4net/release/config-examples.html(“RollingFileAppender ”下的部分)

于 2013-07-21T12:03:28.790 回答
0

所以我实现了这个简单的计数器。

02:23:18,324 INFO  Characteristic: 46d21ef0{8a5b1c7c@293{b0d929ae@276{b0d929ae@182{de8e612a@241
02:23:18,324 ERROR Error rendering: /programovani/artificial_intelligence/covering_ai_theory.texy: java.lang.UnsupportedOperationException: Definition lists not supported yet.
        at cz.dynawest.jtexy.modules.ListModule$DefListPatternHandler.handle(ListModule.java:293)
        ...
02:23:19,956 INFO  Characteristic: 46d21ef0{8a5b1c7c@293{b0d929ae@276{b0d929ae@182{de8e612a@241
02:23:19,957 ERROR Recurring rendeding error: /programovani/artificial_intelligence/covering_ai_theory.texy

用法:

    catch( Exception ex ){
        int count = repeatedExDetector.countException( ex );
        if( count < 2 )
            log.error("Error rendering: " + path, ex);
        else
            log.error("Recurring rendering error: " + path);
        add( new TexyDocumentErrorPanel("document", "Error occured when loading document.", "Couldn't load: " + path, 500));
    }

执行:

在我的博客上

于 2013-07-22T00:26:36.253 回答