我在我的网络应用程序中应该记录哪些信息?
在开发web应用程序时,记录日志是非常重要的。下面是我对应用程序中可以记录的内容进行的逻辑分析,以及为什么要记录和如何记录的原因。无论如何,我建议在实施时使用日志框架,例如log4net。
异常日志记录
当其他所有方法都失败时,异常日志记录是非常重要的。有一个中央捕获所有未处理异常的方法是个好主意。除非你使用多个线程,否则这并不困难。工作并没有结束,因为如果等到异常达到你这里,许多有用的信息可能已经超出了范围。至少,你应该尝试收集可能有助于调试的应用程序状态的特定部分,当堆栈展开时。你的应用程序应该始终准备好生成这种类型的日志输出,尤其是在生产环境中。如果你还没有使用过,一定要看看ELMAH。我没有尝试过,但我听说过它很棒。
应用程序日志记录
我称之为应用程序日志的日志包括捕获关于应用程序在概念层面上所做的事情的信息,例如"Deleted Order"或"A User Signed On"。这种信息可以用于分析趋势、审计系统、测试、安全锁定,以及检测错误。在生产环境中保持这些日志记录通常是个好主意,也许可以根据需求设定不同的详细程度。
跟踪日志记录
对我来说,跟踪日志记录代表最详细的日志记录形式。在这个级别上,你更关注应用程序如何执行任务,而不是它在做什么。这比逐行阅读代码更有帮助。它可能在处理并发问题或其他难以重现的问题时最有帮助。你不会总是让它运行,可能只在需要时才打开它。
最后,就像许多其他通常只在最后才解决的事情一样,最好在项目开始时考虑日志记录,以便设计应用程序时就考虑到它。不过,这是个很好的问题!
相比于记录"A User Signed On",记录"User xyz Signed On"是否更有帮助?(很好的回答,谢谢!)
问题的出现原因:在开发Web应用程序时,开发人员需要确定需要记录哪些信息,以便能够及时追踪和解决问题,同时保护用户隐私和确保系统安全。
解决方法:根据以下指南,确定需要记录的信息,并避免记录不必要的信息。
首先,记录以下内容:
- 业务操作,例如添加/删除项目。与应用程序的业务所有者讨论,以确定对业务有用的事情清单。这些内容应该对业务有意义,而不仅仅对开发人员有意义(例如:用户提交报告时,用户创建新流程时等)。
- 异常情况:记录应用程序中发生的异常情况,以便能够追踪和解决问题。
然而,不应该记录以下内容:
- 不要仅仅为了追踪用户使用情况而记录信息。使用分析工具来完成这个任务(该工具通过JavaScript跟踪客户端,而不是在客户端跟踪)。
- 不要记录密码或密码的哈希值(这是安全问题)。
通过遵循这些指南,开发人员可以确保记录了重要的信息,并保护用户隐私和系统安全。