打开任何应用日志,你就会看到用不同标签标记的同一种信息:,,,,,,,,,为什么不只写下所发生的一切,在一个统一的流中?
这篇文章审视了日志关卡的实际作用,而每一个长期运行的应用程序最终会面孔的伴生问题:使日志文件不会永远地增长(旋转).
日志级别 Is a Filtering 阈值注意:日志表示记录程序运行时发生的事情,因此可以在稍后的文件或屏幕上审查.
Python 的标准模块定义了五个级别: 等值 表示 10 精确追踪代码的精细细节 20 正常进度记录 30 出乎意料的事情,但处理继续 40 一个操作实际上失败 50 应用程序本身不能再继续了 关键点是这个数字不仅仅是一个标签——它是用来过滤的阈值.
将信件设定在20个或20个以上(INFO、Warning、ERROR、CRITICAL)才能写出;在DEBUG (10)中,任何信息都会默默地丢出。
换句话说,平面设计不仅仅是决定要录制什么——它指的是以后能够在不接触代码的情况下拨取可见细节上下.
在正常操作中,您观看INFO及以上;当出事时,您会暂时将阈值降低到DEBUG,以看到细纹的痕迹.
此 App 如何实际配置它 。
在 上方, 日志输出被路由到两个处理器 : 由于阈值为.,DEBUG级消息在正常运行期间不产生输出.
在整个密码库里,有19个电话——写声明是为了默认保持安静,只有在调查期间有人故意降低门槛时才有用。
这就是水平过滤的实际回报:你可以永久地将详细的诊断语句嵌入到代码中,而不需要在以后添加,在正常条件下也不要挤出记录.
实际级别分布回想数 跨同一代码库的呼叫给出:: 135个呼叫: 114个呼叫: 28个呼叫: 0个呼叫INFO 主导,因为应用程序在维护运行期间按顺序处理多个WordPress站点,该序列的每个步骤都需要进度记录.
警告是第二大类别,一个很好的例子出现在 .
其中检测不完整的 SMTP 设置: 注意这个用法 不是 即使通知的电子邮件无法发送,其余的维护运行——备份,更新,回滚决定——仍然可以继续运行;没有实际失败.
被保留给一个操作真的失败的情况(一个WP-CLI更新命令出错,邮件发送时的一个例外,以及类似的情况),这就是为什么它是在28起事故中三个操作中最小的.
完全没有出现,这不是一个疏忽——它源于应用程序是如何设计的.
每个站点都是独立处理的:如果一个站点的维护运行失败,仅该站点就会被卷回,运行会转移到下一个站点.
基本上不存在整个应用需要作为无法继续处理的情况.
除此之外,给用户的紧急通知完全没有通过日志级别处理——它们通过一个单独的通道,.
决定写到日志的内容,决定用户需要告诉什么是两个不同的问题,第二个则生活在应用逻辑中,而不是在日志级别管道中.
旋转:使"永远保持记录"安全日志的积累时间越长,就越有用,但一个没有限制的日志文件最终会填充磁盘.
解决此问题: 一旦文件达到 10MB , 就会触发旋转; 封顶保存了多少个旋转的世代 。
当活动文件达到大小限制时,它被重新命名,一个新鲜的空文件被接管.
下回被打出"极限","变成"等——一旦一代人会超过",就会被删除.
这样可以固定最大磁盘脚印——在这个应用的情况下大约60MB——无论过程持续多久.
对于一个要持续运行于长平面的桌面应用程序