任务日志
Crawlab 会收集爬虫任务的运行日志,方便用户调试和监控爬虫程序。查看日志所在位置为 任务详情
> 日志
标签。
Crawlab 是通过 Stdout
标准输出流来捕获日志的,因此如果希望在 Crawlab 的界面中看到日志,就需要让日志内容输出到 Stdout
中。最简单的做法就是打印出来,例如 Python 的 print
和 Node.js 的 console.log
。
日志搜索
在 “搜索日志” 输入框中可以搜索任何相关的日志行。这里可以是正则表达式。
⚠️注意:日志搜索用的是正则匹配,因此在性能上会有所降低,如果日志量较大,需要耐心等待。
异常检测
Crawlab 内置了日志异常检测,原理是通过正则表达式来完成的。默认会用 error
、exception
、traceback
来匹配日志内容判断该日志文本是否为错误日志。
如果 Crawlab 发现有错误日志,会在任务列表和任务详情中展示出来,如下图。
在 “日志” 标签中,如果有日志日常,Crawlab 将展示一个 “错误数” 的按钮,点击它可以看到全部或一部分标红的错误日志,点击这些错误日志将会导航到该错误日志所在位置。
自动滚动
启用 “自动滚动” 按钮可以让日志翻到最底部,并在日志更新时自动翻到最底部。
日志设置
我们可以对日志的设置进行更改,包括异常的正则表达式、最大异常日志展示、日志过期时间。设置界面在 ”设置“ -> “日志“ 中,如下图。每一个用户可以有不同的日志设置。
下面解释一下日志设置各配置项的意义:
- 异常正则表达式:这是判断异常日志文本的方式,如果该正则表达式能匹配上日志文本行,则该行为错误或异常日志;
- 最大异常日志展示:在日志详情中,“错误数” 的最大展示行数,默认为 1000;
- 日志过期时间:日志在多少时间之后被自动删除,默认不删除,但强烈建议设置一个过期时间以防止日志撑满数据库。
原理
Crawlab 的日志和异常日志是分别储存在 MongoDB 数据库的 logs
和 error_logs
collection 中的。对于大数据量的日志来说,数据库很容易撑满,因此我们强烈推荐设置一个过期时间。
logs
的索引有三个:
task_id
和seq
组合索引,方便分页查询(未带搜索条件),查询开销小;task_id
和msg
组合索引,方便搜索查询,查询开销较大;expire_ts
TTL 索引,方便自动删除日志。
其中, task_id
为任务 ID,seq
为日志的序号,msg
为日志内容,expire_ts
为过期时间。