Windows应用程序中的日志记录(跟踪)准则

use*_*783 7 windows logging trace

我认为有两种不同类型的日志记录:

  • 以用户为中心的日志,例如我的反病毒产生的日志("已开始扫描","未发现威胁"等)
  • 以开发人员为中心的跟踪,可以像异常日志一样简单,也可以像每个方法调用的日志一样详细

我目前正在计划如何将第二种类型的日志记录合并到我们的应用程序中,以便我们能够记录用户报告问题时出现的问题.我已经看过几个关于这些痕迹应该如何详细和可用框架的讨论,但在这里我正在寻找一些更一般的指导方针.

我的具体问题包括:

  • 我们应该记录到文件,Windows事件日志还是其他地方?对于这些可能对用户不感兴趣的以开发人员为中心的日志,我觉得文件最合适.但在那种情况下:

    • 文件应该放在哪里?
    • 我们应该实现某种形式的日志轮换以防止文件过大?
    • 我们如何处理同时访问日志的应用程序的多个实例?

  • 该跟踪是否应该默认打开?如果是的话,我有点担心表现; 但如果不是,我们是否会以"开启跟踪并尝试重现问题"来回应许多用户的问题?这听起来不太有用.

我希望你能帮我解决这些问题.我也非常感谢您对此主题的任何其他建议.

Pre*_*gha 7

如果平台可用,您应该使用已建立的日志记录框架.对于log4j(java),log4net(.net)等.大多数已建立的框架将以非常精确的方式提供增加和减少日志记录(从而影响性能)的方法.你必须复制所有这些.

如果没有,ETW(Windows的事件跟踪)是一个内置于窗口的高性能日志系统.我建议在每种情况下都没有日志记录框架.

哦,不要担心性能直到它出现问题(这并不意味着不考虑它,只是不要微观优化,直到你需要).