当前位置:  开发笔记 > 运维 > 正文

记录,何时和什么?

如何解决《记录,何时和什么?》经验,为你挑选了2个好方法。

我目前正在开发一个将在海外部署的大型多层应用程序.虽然我希望它一旦解复就不会摔倒或炸毁,但我不能100%肯定这一点.因此,知道我可以请求日志文件,确切地知道出了什么问题以及原因,这将是很好的.

所以基本上标题表明我想知道何时以及记录什么?我想知道这一点,以确保我有完整的日志文件,可以轻松检查,以确定如果我的应用程序崩溃发生了什么.



1> Chris Arguin..:

1 - 使用标准格式制作单个日志.无论多么重要,但确保入口具有相同的基本字段.只是调用"printf"可能不会削减它(替换System.err.println或其他任何适当的)

2 - 允许至少一个字段是一个任意字符串......开发人员会比你更了解需要的东西.

3 - 在每个条目上包含高分辨率时间戳.你最终会需要它,相信我.

4 - 如果可能,请包含错误原点的文件和行号.这在C中很容易,而且在Java中有点痛苦.但它在以后非常有用,特别是当人们开始剪切+粘贴代码时,包括错误消息.

5 - 确保日志位于任何级别的代码都可以使用它的位置.

6 - 我经常使用"Primary"和"Secondary"错误标记,其中"Primary"表示"我是检测到存在问题的人","Secondary"表示"我调用了报告错误的函数" ".这样可以很容易地找到问题的根源("主要:找不到文件")并仍然报告错误的含义("辅助:无法加载校准表").

7 - 包括一些记录非错误和错误的功能.

我找到的最困难的部分是错误不一定是错误.如果您使用文件调用函数,并且该文件不存在,那么该错误是否应该记录?有时它是一个严重的失败,有时它是预期的.这几乎取决于函数的API; 如果函数有办法返回错误,我通常会在没有记录的情况下执行此操作; 然后,更高级代码的工作是决定是否需要报告该错误或是否是预期错误.



2> Ian..:

首先,抓住自己的日志框架 - 你没有提到任何特定的语言,但任何基于Apache log4j的框架都是一个安全的选择.最重要的是框架支持不同级别的详细程度(调试消息,警告,错误消息).您可以在运行时配置记录器,以确定它将实际写入哪些消息,以及在哪里 - 没有必要重新发明轮子以使用日志记录.

在源代码中实现日志记录框架.至少,您应该寻找记录,然后"添加值"到您的应用程序中可能发生的异常.将堆栈跟踪写入日志文件一切都很好,但是很少能够诊断问题 - 考虑在catch {}中记录方法参数的值.

在更高级别,您可以利用不同级别的详细程度来记录应用程序中发生的情况.如果错误仅发生在无法连接远程调试器的生产系统上,则此功能特别有用 - 您可以在日志框架配置文件中增加详细程度,并观察所有调试("使用参数调用方法X" Y")消息出现在日志中.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有