我目前正在开发一个相当大的多层应用程序,将部署海外。虽然我希望它在部署后不会崩溃或爆炸,但我无法百分之百确定。因此,知道我可以请求日志文件来确定出了什么问题和原因是很好的。
基本上,正如标题所示,我想知道何时记录以及记录什么?我想知道这一点,以确保我有全面的日志文件,可以轻松检查以确定如果我的应用程序崩溃了发生了什么。
基本上,正如标题所示,我想知道何时记录以及记录什么?我想知道这一点,以确保我有全面的日志文件,可以轻松检查以确定如果我的应用程序崩溃了发生了什么。
1 - 制作一个单一的日志,使用标准化格式。不必过于关注它是什么,但确保每个条目都具有相同的基本字段。仅仅调用"printf"可能不够(根据需要替换为System.err.println或其他内容)。
2 - 至少允许一个字段是任意字符串...开发人员会比你更清楚需要什么。
3 - 在每个条目上包括高分辨率时间戳。您最终将需要它,相信我。
4 - 如果可能,请在错误来源处包括文件和行号。在C中很容易,在Java中有点麻烦。但是它非常有用,特别是当人们开始剪切和粘贴代码,包括错误消息时。
5 - 确保日志位于任何级别的代码都可以使用的位置。
6 - 我经常使用“Primary”和“Secondary”错误标签,“Primary”表示“我是检测到问题的人”,而“Secondary”表示“我调用了报告错误的函数”。这使得查找问题的源头变得容易(“Primary:文件未找到”),并且仍然报告错误的含义(“Secondary:无法加载校准表”)。
7 - 包括一些记录非错误以及错误的能力。
我发现最困难的部分是当错误不一定是错误时。如果您使用文件调用函数,而该文件不存在,这是否应该记录为错误?有时它是关键性失败,有时它是预期的。这基本上取决于函数的API;如果函数有一种返回错误的方法,我通常会让它执行而不记录;然后由更高级别的代码来决定是否需要报告该错误或者它是否是预期的。