lla*_*all 3 java logging exception
我有一个安全类,它会向AccessDeniedException未经授权的用户进行某项操作。我什至使它整洁,并在其中添加了我需要的信息。
问题在于,现在我每次抛出日志时,日志中都充满了堆栈跟踪。我不在乎看到此异常的堆栈跟踪,并且堆栈跟踪使我的日志膨胀。
有没有一种方法可以告诉Java,如果出现此异常,则不要将堆栈跟踪记录打印到日志中?
问题是现在我的日志中充满了堆栈跟踪
这就像在说“我的火警警报一直不停,我该如何使其静音?”。只有两种良好的行动方案。
确定这些是虚假警报,并更改警报系统,以使它对实际上没有危险的事件不太敏感。如果引发了异常,则抛出异常并不表示存在错误,甚至不表示任何异常现象。即使检查异常值得记录,堆栈跟踪也不值得记录,因为堆栈跟踪仅对调试有用。
确定警报是真实的,在这种情况下,找出火灾持续爆发的原因,并修复点燃它们的一切。也就是说,要修复导致引发异常的错误。如果您有许多臭虫泛滥日志文件也没关系这你解决第一,所以刚修好取其最容易在日志文件中读取
我不知道这是否会对您的日志记录有所帮助,但是如果您纯粹为了提高代码的逻辑和可读性而创建异常,并且如果您从没想过它到底来自哪里,那么请重写该fillInStackTrace()方法,像这样:
public class AccessDeniedException extends Exception {
public synchronized Throwable fillInStackTrace() { return this; }
}
Run Code Online (Sandbox Code Playgroud)
这将提高你的程序的性能——如果你抛出很多这样的程序,效果会显着提高。它不会消除日志记录。其他答案应该对此有所帮助,但如果没有,您的日志消息将会大大减少。