我应该在我的网络应用程序中记录哪些信息?

Mic*_*cah 7 asp.net-mvc logging instrumentation

我完成了一个Web应用程序,我正在尝试实现一些日志记录.我从来没有见过任何记录什么的好例子.这只是例外吗?还有其他我应该记录的东西吗?您发现哪种类型的信息对查找和修复错误很有用.

寻找一些具体的指导和最佳实践.

谢谢

跟进

如果我正在记录异常,我应该记录哪些信息?我应该做些什么_log.Error(ex.Message, ex);吗?

Bla*_*lor 10

以下是我可以记录的内容和应用程序的逻辑细分,您可能想要的原因以及如何执行此操作.无论我建议在实现时使用log4net等日志框架.

异常记录

当其他一切都失败了,这不应该.拥有捕获所有无法处理的异常的中心方法是一个好主意.除非你使用的不仅仅是线程,否则将整个应用程序包装在一个巨大的try/catch中应该不会困难得多.这项工作并没有结束,因为如果你等到异常到达你,很多有用的信息都会超出范围.至少你应该尝试收集应用程序状态的特定部分,这些部分可能有助于在堆栈展开时进行调试.您的应用程序应始终准备好生成此类型的日志输出,尤其是在生产中.如果你还没有,一定要看看ELMAH.我没有尝试过,但我听到了很棒的事情

应用程序记录

我称之为应用程序日志的任何日志都包含捕获有关您的应用程序在概念级别上执行的操作的信息,例如"已删除订单"或"用户已登录".这种信息可用于分析趋势,审核系统,锁定系统,测试,安全和检测粗略的错误.计划将这些日志留在生产中也许是一个好主意,可能是在不同的粒度级别.

跟踪记录

对我来说,跟踪日志记录代表了最精细的日志记录形式.在这个级别,您更少关注应用程序正在做什么,而更多关注它是如何做的.这是实际逐行遍历代码的一步.它可能最有助于处理并发问题或任何难以重现的问题.你不希望总是让它运行,可能只在需要时打开它.

最后,与通常只在最后解决的许多其他事情一样,考虑日志记录的最佳时间是在项目的开始,以便应用程序可以在设计时考虑到它.但是很棒的问题!


Edu*_*coz 6

要记录的一些事情:

  • 业务操作,例如添加/删除项目。与您的应用程序的业务所有者交谈以列出有用的内容。这些应该对业务有意义,而不是对你有意义(例如:当用户提交报告时,用户创建新流程时等)
  • 例外
  • 例外
  • 例外

一些不要记录的事情:

  • 不要仅仅为了跟踪用户使用而记录信息。为此使用分析工具(在 javascipt 中跟踪客户端,而不是在客户端中)
  • 不跟踪密码或密码哈希(巨大的安全问题)