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,假设您有一个应用程序的特殊日志表 对于为可能的堆栈跟踪创建BLOB字段,您认为如何 也会对文件进行日志记录,但读取文本文件并不方便,而且数据库更“可访问”。如果堆栈跟踪是由于数据库连接故障造成的,该怎么办?有些事情需要尽可能低层次和简单。另外,我不明白为什么数据库应该比文件共享或ssh帐户更容易访问。我以前在一个发生这种情况的应用程序上工作过,但正如Marcelo Cantos所建议的那样,它从来都不是真正可靠的,因为某些异常无法记录在那里,所以我们从未使用过它,而是始终依赖于日志文件 如果您使

假设您有一个应用程序的特殊日志表

对于为可能的堆栈跟踪创建BLOB字段,您认为如何


也会对文件进行日志记录,但读取文本文件并不方便,而且数据库更“可访问”。

如果堆栈跟踪是由于数据库连接故障造成的,该怎么办?有些事情需要尽可能低层次和简单。另外,我不明白为什么数据库应该比文件共享或ssh帐户更容易访问。

我以前在一个发生这种情况的应用程序上工作过,但正如Marcelo Cantos所建议的那样,它从来都不是真正可靠的,因为某些异常无法记录在那里,所以我们从未使用过它,而是始终依赖于日志文件


如果您使用日志文件调试错误,您还将以正确的顺序获得您选择打印的任何其他调试信息消息;很少您只需要一个堆栈跟踪,通常导致堆栈跟踪的内容即使不是更有用也同样有用。

重复日志记录听起来像。。。嗯,重复记录。开销如果您需要通过数据库访问日志,我宁愿使用/编写一个工具,在需要时将日志导入单独的数据库。或者通过其他方式让他们可以访问。据我所知,有一种工具是Splunk,但它很昂贵,而且我确信还有其他工具。

为什么?或者至少,如果你要这么做,为什么要用水滴场


如果我要实现类似的东西,我会将异常分离为单独的StackTraceElements,并将它们存储到适当的表中。随着时间的推移和各种各样的失败,您可能会生成一些有关应用程序中风险和质量性质的有趣统计信息。

这只是一个重复的日志,而不是主日志。主log4j日志文件也将保留。将堆栈跟踪记录到数据库的确切原因是什么?当登录到文本文件时,您会得到什么不存在的好处?通常我会记录有意义的消息,如“我们在尝试这样做时遇到异常”。但我正在考虑添加额外的字段,如果存在异常跟踪,它将保存一个异常跟踪。为什么?嗯,更容易阅读。快速的如果您需要详细信息,可以深入查看完整的日志文件。考虑到这种方法的局限性(如下面的答案所总结),我个人不会投资于此功能。似乎没有足够的ROI。@吉姆·拉什(Jim Rush)导致某些数据库引擎的每个字符字段不能容纳超过255个字符。@EugeneP是正确的,我没有把它看作是大小项目,但没有太多的能力来搜索数据。如果是我,我将允许按包、类和方法进行搜索。结合来自代码覆盖率和测试工具的统计数据,可能会产生一些有趣的分析