0

我正在使用类似于项目经理的 Django 开发应用程序。出于这个原因,系统应该能够存储有关所有内容的信息。当我所说的一切都是指用户执行的操作、执行操作时发生的错误等。我有一个类 Log,它的一个属性称为 action_type,此属性指定刚刚发生的操作类型。我应该有5种类型:

INFO:此日志存储与用户操作相关的信息,例如创建项目、创建其他用户等。

DEBUG:应该存储开发人员所做的评论,以便他们检测错误。

ERROR:显示系统中发生但不影响系统功能的错误。

警告:这是针对潜在的破坏性行为。

致命:意外错误、异常和安全漏洞。

我只能为 INFO 提供逻辑日志。

你能告诉我一些我应该包含在这个和其他类别中的合理日志吗?

4

1 回答 1

1

答案将在很大程度上取决于您的应用程序所做的事情,但我的基本方法是:

每次你准备好记录一个事件时,只要想一想这个事件,它所属的地方就会很清楚。它杀死了你的应用程序吗?这是致命的。它是否阻止某些东西正常工作?这是一个错误。它会阻止某些东西起作用吗?这次我们是不是很幸运?这是一个警告。有人在乎吗?信息。否则,如果您仍然需要记录它,它必须用于调试目的。

在您的特定上下文中,听起来您可能只是在尝试记录用户操作。如果是这种情况,唯一可能致命的操作将是您不提供撤消选项的操作(或者,我想,如果用户能够通过您的应用)。我也无法想象任何来自用户操作的调试级日志。因此,我假设您将记录除用户操作之外的代码级事件。

致命:这应该只在您的应用程序实际崩溃时出现在日志中,并且可能与 500 响应一起出现。您可能会在您的 wsgi 应用程序中以包罗万象的方式生成这些,只有当进程否则会终止时。

错误:可能与 http 错误响应有关。这通常用于由应用程序之外的某些东西引起的错误。您的代码中发生的事情可能是预期的并且 <= 警告级别,或者意外和致命的。错误可能是来自用户在 url 中输入错误的 404、表单提交时的验证错误或身份验证错误。从另一个方向来看,您联系的远程 Web 服务可能会返回错误,或者来自操作系统的 IO 错误。

警告:对于不会破坏任何东西的东西,但如果你坚持下去,那可能会咬你。示例是使用已弃用的 api 和任何仅因默认设置(时区、字符编码等)而起作用的地方。也许某些输入值也会导致警告,例如将截止日期设置为过去。

信息:一般,运行良好。有人创建了一个数据库行(一个新项目还是一个任务?),创建了一个帐户,登录或退出,成功打开了一个套接字等。

调试:正如它所说的那样。一旦代码正常工作,您通常会关闭的输出。方法进入/退出、对象实例化、代码中各个点的字段值、计数器。无论您需要什么来弄清楚为什么您的程序现在正在崩溃,因为您正在处理它。

于 2012-12-06T06:32:52.200 回答