Language agnostic 我是否应该登录?

Language agnostic 我是否应该登录?,language-agnostic,logging,Language Agnostic,Logging,我相信你们中的很多人都有过这样的争论:在应用程序日志文件中写什么或不写什么 我不是在谈论我们肯定会记录在catch子句中的小错误异常 假设我们有一个标准应用程序,它正在连接到数据库进行一些选择 我们有一个Dao对象,其中的每个方法包装一个select查询 我想听听你的建议。在执行任何选择之前,我是否应该记录每个入口和出口?我应该记录结果吗 记录错误stacktrace怎么样?我发现它非常混乱,日志文件超载 有人能推荐我一篇关于这个主题的好文章吗(不需要记录数据库执行情况,但一般来说) 谢谢 雷。

我相信你们中的很多人都有过这样的争论:在应用程序日志文件中写什么或不写什么

我不是在谈论我们肯定会记录在catch子句中的小错误异常

假设我们有一个标准应用程序,它正在连接到数据库进行一些选择

我们有一个Dao对象,其中的每个方法包装一个select查询

我想听听你的建议。在执行任何选择之前,我是否应该记录每个入口和出口?我应该记录结果吗


记录错误stacktrace怎么样?我发现它非常混乱,日志文件超载

有人能推荐我一篇关于这个主题的好文章吗(不需要记录数据库执行情况,但一般来说)

谢谢


雷。

记录的内容不要超过需要

这里有更详细的解释


干杯

这就是为什么您有不同的日志级别。您在log_INFO中记录的纯信息性内容和在log_DEBUG中记录的调试内容。实际记录的内容取决于用户。

记录的具体含义是:在发生事情时做笔记。因此,作为开发人员,您需要了解自己的需求,以及客户的需求。在这两种情况下,试着找出你需要什么来完成你的任务

作为一名开发人员,您应该决定您对软件的信心程度:如果软件经过全面测试和调试,那么您根本无法记录任何内容,只能尝试跟踪崩溃。另一方面,如果您正在进行调试,则可能需要更多详细信息。一般来说,您应该允许在信心增加时关闭日志记录,并在THNG开始失败时打开日志记录,这可能是通过配置设置实现的。当您需要决定记录什么时,问问自己:如果它崩溃了,这些信息会帮助我确定问题还是只是噪音


对你的客户来说,这要看情况而定。例如,在共享系统上,知道谁做了什么很好,所以我碰巧记录了客户所做的操作。您应该同意您的客户的意见。

我已经删除了C#和Java标记,因为您的问题在很大程度上与语言无关。“记录错误stacktrace怎么样?我发现它非常混乱,并且日志文件过载”-这些不正是您想要识别和修复的东西吗?您可以创建多个日志文件。我已经超过20岁了一个用于错误和一般执行,另一个用于查询和结果等。如果您不喜欢日志中的错误,我建议您修复代码,以免日志中出现错误。;)这与我的日志中有错误无关。。这是关于除了错误之外,我的日志中应该有什么和不应该有什么!我有时看到程序员在日志中编写整个流程(debug),这会增加日志的开销,让人很难理解。我看到了一种方法,当程序员调试方法的每个入口和出口时。你怎么看?一切都取决于目的。这种技术有点“极端”:您正在对应用程序进行完整跟踪,可能会产生大量数据。但是,如果你的应用程序出现错误,你找不到复制它的方法,也不能使用调试器,这可能是你最后的手段。它被称为插装,对于调试许多问题非常有用,只要单步执行代码就会改变计时,从而改变行为(线程)或者会太麻烦或耗时。后者尤其是框架代码中的情况,这种情况非常常见,但大多数情况下与问题无关。当检测日志在每个“enter”上缩进,在每个exit上缩进时,调用顺序、线程争用和复杂的不需要的递归问题变得更加明显。