java - 在分层应用程序中记录异常的最佳实践,以避免重复的错误日志消息

标签 java exception logging n-tier-architecture

在具有表示层、服务层和数据层的经典三层应用程序中,确保简洁且不重复的异常报告日志消息的最合适方法是什么。想象一下,您的 dao 层捕获任何类型的检查异常(我们将使用 Java 术语,但相同的概念适用于其他异常处理语言)并将其转换为带有适当消息的 daoException。是否应该在 dao 层同时记录适当的消息(例如“访问 db 时发生异常”+ e.getMessage())?然后服务层捕获所有dao异常,本身提供适当的服务层消息,将dao异常(包装它)转换为service异常,然后重新抛出。服务层是否也应该记录捕获的异常?简而言之:

  • 应该只在dao层记录它吗?
  • 应该只由服务层记录它吗?
  • 两层都应该记录它吗?
  • 或者应该考虑每种情况 根据用例/服务调用等具体情况?

出于这个问题的目的,我忽略了表示层。

最佳答案

服务层异常中的堆栈跟踪将包含底层的 dao 异常,因此我认为将其记录在服务层是有意义的。

关于java - 在分层应用程序中记录异常的最佳实践,以避免重复的错误日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889225/

相关文章:

java - 如何为 json 对象(如 javascript 对象文字)编写 Jackson pojo 类

java - xpath 在 selenium 中无法识别,但在 XPather 中可以识别

java - 如何在 Mule + Jersey + Spring 中注册自定义异常映射器?

java.lang.ArrayIndexOutOfBoundsException : length=0; index=0 - Database Reading - Android 异常

java - 如何在 Glassfish 3 中为每个部署的应用程序配置 log4j?

java - vertx 上的最佳实践设计。存储库的 Eventbus 或 Singleton

java - 将 ActionListener 添加到 JMenuItem 不起作用

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

java - Log4j2 没有正确登录到 graylog 服务器

Python 的日志记录模块缺少 "captureWarnings"函数