要记录还是不记录?

时间:2009-12-29 19:33:49

标签: logging file-io

我现在正在建立一个电子书管理员,读者,组织者和出版商的程序,这也是一个电子书转移(对于像Kindle这样的电子书阅读器),但我正在开发它并且一个问题加速了我的想法:“记录与否?”

然后我开始考虑记录。当许多程序记录操作时,我开始寻找它们并看到它们如何记录事物,然后我想知道:

  • 记录程序中发生的动作或事情(如错误)是好的吗?
  • 就我而言,记录东西很好吗?
    • 我需要记录什么?
  • 记录事物的最佳方式是什么(文本文件,数据库......)?
  • 有任何记录Lazarus的工具吗?

8 个答案:

答案 0 :(得分:22)

这很重要。登录

  1. 相关数据的所有错误(方法args等)。否则,您将遇到一系列无法​​分析的与bug相关的行为。
  2. 关键的进入和退出点(你的程序在做什么?此时应该调用这些方法吗?)
  3. 可能耗费时间的方法/操作(进入和退出),因此您可以衡量正在发生的事情,并了解您的计划正在做什么/在哪里。
  4. 您正在从中加载配置(如果适用)。这意味着您可以告诉您的程序如何自行配置(使用哪个配置?)
  5. 如果你做对了,你可能会发现你在调试器中花的时间越来越少。

    我会错误地记录更多而不是更少,如果/当这成为问题时删除或过滤(如下所述,每天记录Gbs可能适得其反)。我已经在许多系统上工作,在这些系统中,已经规定在开发后将关闭或删除日志记录,并且永远不会发生,因为它非常有用。有些人反对以影响性能为基础进行日志记录。如果是这种情况,请在 时将其删除已知问题,而不是之前。

    您应该能够为您的特定平台找到合适的日志记录框架(例如,log4c代表C,log4j代表Java),以便进行适当的过滤和目标选择。这意味着您可以登录到文件(并限制日志大小),数据库,远程监视器等,并在运行中(通过配置文件或命令行参数)更改此决策。除了插入适当的日志记录语句之外,正确的框架最初应该只需要很少。您不必在文件管理或其他日志管理代码方面写得太多。

    这是关于此主题的useful blog entry,还有其他指导原则。

答案 1 :(得分:7)

记录是必不可少的。为什么?用于追踪目的。只要您在本地计算机上进行开发,就可以快速调试,设置断点并找出出错的地方。一旦你在生产中部署,你的客户就会打电话给你,告诉他没有看到他的期望(某处出现错误信息)。相信我,如果你没有日志,你将很难搞清楚发生了什么。

嗯......布莱恩的回答刚刚说明基本上我想要继续的地方:)

无论如何,您也可以考虑一些面向方面的技术。它们非常适合日志记录,并且可以保持代码清洁。可能是您项目的一个选项。

关于日志记录的类型:我通常使用纯文本文件(具有一定的最大大小)工作得很好,除非您必须跟踪所有用户的活动(法律原因,无论如何)。在这种情况下,DB日志可能更合适。

答案 2 :(得分:4)

在组件开发的第一阶段记录所有内容。通常我在控制台上进行所有开发工作,如果需要,我可以看到我的所有逻辑都是逐行输出的。在向前移动时,记录错误始终是必须的,复杂数据操作后的记录值也很有用。想想很快因为四舍五入的军事灾难。

我建议通过数据库登录到平面文件。

答案 3 :(得分:2)

将错误记录到一致格式化的平面文件中,以便您可以从客户那里检索它们,并在需要时将它们读入excel或db进行分析。

答案 4 :(得分:2)

这是一个非常普遍的问题......对于初学者,我会说你应该有几个日志记录级别。在跟踪级别上,记录您的所有内容。在错误级别,仅记录服务器错误。可以在运行时选择日志记录级别,但最终用户不应该选择此选项。此外,请记住,如果您将日志提供给除您之外的其他人(例如您的支持团队),请确保您的消息是人类可读的,而不是您能理解的内容。

有很多日志记录基础架构,环顾四周,看看哪些适合您的开发环境。使用经过良好测试的基础设施可能比创建自己的基础设施更容易。

答案 5 :(得分:2)

  
      
  • 记录程序中发生的动作或事情(如错误)是好的吗?
  •   

是的,你总是需要找到一个错误的方法。您还应该对它们进行分类,以便稍后可以关闭某类日志消息的日志记录(例如,在开发时您希望获得调试消息;在您发送应用程序之后,您只关心错误和警告)。

  
      
  • 在我的情况下,记录东西很好吗?
  •   

见上文。

      o What I need to log?
  • 每个错误(应用程序/功能不起作用)
  • 每个警告(应用程序/功能仍然有效,但值得保留记录)
  • 信息(好的东西)
  • 调试(只有开发人员关心的东西)

有了课程,您还应该记录相关数据。

  
      
  • 记录事物的最佳方式是什么(文本文件,数据库......)?
  •   

我更喜欢文件,因为它们易于阅读并且可以与其他人轻松共享。但只要您可以访问日志,媒体就是一个较小的问题。

我建议使用日志记录框架,因为日志记录是您应用程序的重要组成部分,并且许多人已经提出了非常好的解决方案。这样你就不会一遍又一遍地发明轮子,而是你有更多的时间来开发你的应用程序。

答案 6 :(得分:1)

记录始终是必不可少的,因为生产中可能会出现错误,需要输出有关所发生情况的信息。

但是,除了错误之外,无论是否记录键入口和出口点,可能耗费时间的方法/操作等都取决于应用程序和环境。如果您没有在系统中内置性能分析,那么您需要记录或能够打开详细的日志记录,以便跟踪性能问题。

同样,如果您没有实时调试工具,则需要记录密钥入口/出口点,或者能够打开日志记录。

如果系统处理数百万个事务,每个事务都有数百万个操作,那么您不希望在每个子系统/进程上始终保持此级别的日志记录,否则您的应用程序会快速填满所有可用的磁盘空间 - 这是一个问题。

对于小型,简单的系统,生产日志的一般默认级别和跟踪问题的调试级别可能就足够了。

答案 7 :(得分:1)

在开发过程中进行日志记录并不重要 - 如果有帮助,请执行此操作;当它停止帮助时停止这样做。

良好的日志在生产过程中变得很重要。列出您将遇到的问题类型,并记录解决这些问题所需的信息。您是否会因版权侵权而被起诉?然后记录你需要保护自己的东西。人们会向读者报告错误并寻求帮助吗?然后记录您回答问题所需的内容并最大限度地降低支持成本。

记录太多(无用的)信息很容易。如果您不需要它,请不要记录它。服务器会失败吗?网络会失败吗?你的存储空间不足吗?是的,您可以登录以帮助诊断这些问题,但这主要是用于监控而不是记录的工作。

Syslog提供了非常好的管理和集中控制。有许多日志框架的工作方式大致相同 - 这是您个人喜好的一种。我在syslog之上使用结构化,可搜索的日志格式。在上线之前,所有临时开发日志记录都将被删除。