云函数 SCF 日志按条写入日志服务 CLS,每次请求的日志由多条组成,每条日志均为固定的 键:值
格式。
单条日志键值格式
默认格式
默认格式下每条日志均由 14 个固定的 键:值
组成,如下表所示:
字段名称 | 字段类型 | 字段含义 |
SCF_FunctionName | text | 函数名称。 |
SCF_Namespace | text | 函数所在命名空间。 |
SCF_StartTime | long | 调用开始时间。 |
SCF_LogTime | long | 日志产生时间。 |
SCF_RequestId | text | 请求 ID。 |
SCF_Duration | long | 函数运行时间(单位:毫秒)。 |
SCF_Alias | text | 别名。 |
SCF_Qualifier | text | 版本。 |
SCF_MemUsage | double | 函数运行内存。 |
SCF_Level | text | Log4J 日志级别,默认为 INFO。 |
SCF_Message | text | 日志内容。 |
SCF_Type | text | 日志类型,Platform 指平台日志,Custom 指用户日志。 |
SCF_StatusCode | long | 函数运行 状态码,202 表示请求状态为运行中。 |
SCF_RetryNum | long | 重试次数。 |
精简格式
精简格式键值组成相对默认格式进行了删减,仅保留了日志查询场景下必须依赖的字段。精简格式下区分用户日志及平台日志,不同类型的日志对应不同的格式,如下表所示:
用户日志
用户日志为用户在代码中的标准输出,平台会对标准输出进行捕捉并上报到日志服务 CLS。
字段名称 | 字段类型 | 字段含义 |
SCF_FunctionName | text | 函数名称。 |
SCF_Namespace | text | 函数所在命名空间。 |
SCF_LogTime | long | 日志产生时间。 |
SCF_RequestId | text | 请求 ID。 |
SCF_Alias | text | 别名。 |
SCF_Qualifier | text | 版本。 |
SCF_Message | text | 日志内容。 |
SCF_Type | text | 日志类型,Platform 指平台日志,Custom 指用户日志。 |
SCF_RetryNum | long | 重试次数。 |
平台日志
平台日志为在每次请求的开始和结束时打印的日志的内容,用于标记请求的开始、结束和记录执行情况,不支持取消。平台日志有两种键值组成,记录请求执行情况的 report
日志键值组成为下表1,其他平台日志(如 START、END、ERROR、Response)键值组成为下表2。表1表2
字段名称 | 字段类型 | 字段含义 |
SCF_FunctionName | text | 函数名称。 |
SCF_Namespace | text | 函数所在命名空间。 |
SCF_StartTime | long | 调用开始时间。 |
SCF_LogTime | long | 日志产生时间。 |
SCF_RequestId | text | 请求 ID。 |
SCF_Duration | long | 函数运行时间(单位:毫秒)。 |
SCF_Alias | text | 别名。 |
SCF_Qualifier | text | 版本。 |
SCF_MemUsage | double | 函数运行内存。 |
SCF_Level | text | Log4J 日志级别,默认为 INFO。 |
SCF_Message | text | 日志内容。 |
SCF_Type | text | 日志类型,Platform 指平台日志,Custom 指用户日志。 |
SCF_StatusCode | long | 函数运行 状态码。 |
SCF_RetryNum | long | 重试次数。 |
字段名称 | 字段类型 | 字段含义 |
SCF_FunctionName | text | 函数名称。 |
SCF_Namespace | text | 函数所在命名空间。 |
SCF_StartTime | long | 调用开始时间。 |
SCF_LogTime | long | 日志产生时间。 |
SCF_RequestId | text | 请求 ID。 |
SCF_Alias | text | 别名。 |
SCF_Qualifier | text | 版本。 |
SCF_Message | text | 日志内容。 |
SCF_Type | text | 日志类型,Platform 指平台日志,Custom 指用户日志。 |
SCF_RetryNum | long | 重试次数。 |
日志格式选择与切换
1. 登录 云函数控制台,在左侧选择函数服务。2. 在“函数服务”页面上方,选择函数的地域和命名空间,并在页面中单击期望切换日志格式的函数名,进入该函数的详情页面。3. 在“函数管理”页面中,选择函数配置 > 日志配置 > 日志格式,进行日志格式的选择和切换。如下图所示:

注意日志配置为函数级,配置更新后对 $LATEST
版本和已发布版本均立即生效。获取函数运行日志 接口暂不支持精简格式日志查询,请使用 CLS 搜索日志接口。如果已经使用 API 对日志键值进行处理,请详细阅读不同日志格式下的字段调整情况后谨慎操作。精简格式相对于默认格式可降低日志产生的费用,但不再提供实时展示函数执行期间运行耗时、运行内存等信息。精简格式仅支持非镜像部署的事件函数。
单次请求日志结构
SCF 单次请求日志结构分为调用日志和预置日志两种。调用日志结构预置日志结构SCF 调用日志以平台日志标记请求开始、请求结束、请求错误信息、函数返回信息以及请求执行情况,用户日志封装在请求开始至请求结束之间。日志结构如下(表格中仅展示 SCF_Message
字段示例):
SCF_Message | 日志类型 | 内容含义 |
START RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx | 平台日志 | 标记请求开始。 |
init log | 用户日志 | 用户在函数初始化阶段打印的日志内容,容器仅在冷启动场景下会执行初始化逻辑,非冷启动场景下无初始化日志输出。 |
Init Report RequestId: 09c346d3-8417-49c5-8569-xxxxxxxxxxxx Coldstart: 236ms (PullCode: 70ms InitRuntime: 8ms InitFunction: 158ms) Memory: 640MB MemUsage: 57.86MB | 平台日志 | 初始化执行情况日志,Coldstart 为初始化阶段总耗时,其中 PullCode 为初始化阶段拉取用户函数和层代码耗时或拉取镜像耗时,InitRuntime 为初始化阶段平台耗时,InitFunction 为初始化阶段用户代码执行耗时,Memory 为函数配置内存,MemUsage 为初始化阶段运行内存。容器仅在冷启动场景下会执行初始化逻辑,非冷启动场景下无初始化日志输出。 |
invoke log | 用户日志 | 用户在函数调用阶段打印的日志内容。 |
ERROR RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx Result:xxx | 平台日志 | 函数错误原因,函数执行正常时无 ERROR 日志。 |
Response RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx RetMsg:”Hello World” | 平台日志 | 函数返回信息记录在 RetMsg 中。 |
END RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx | 平台日志 | 标记请求结束。 |
Report RequestId:09c346d3-8417-49c5-8569-c55033b17f51 Duration:1ms Memory:128MB MemUsage:29.734375MB | 平台日志 | 函数调用执行情况日志,Duration 为函数执行耗时,Memory 为函数配置内存,MemUsage 为函数执行阶段运行内存。 |
以 Python
运行环境的 Web 函数,打印一行初始化日志及一行调用日志为例,代码如下:
from flask import Flaskapp = Flask(__name__)print("init log")
@app.route('/')def hello_world(): return 'Hello World'
if __name__ == '__main__': app.run(host='0.0.0.0',port=9000)
输出日志结构如下(仅展示 SCF_Message
字段内容):
START RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx * Serving Flask app "app" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:9000/ (Press CTRL+C to quit)init logInit Report RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx Coldstart: 640ms (PullCode: 119ms InitRuntime: 2ms InitFunction: 519ms) Memory: 640MB MemUsage: 5.21MBHello worldResponse RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx RetMsg:"Hello World"END RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxxReport RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx Duration:1ms Memory:128MB MemUsage:29.734375MB
SCF 预置日志以用户打印日志开始,以平台日志标记预置结束,日志结构如下(表格中仅展示 SCF_Message
字段示例):
SCF_Message | 日志类型 | 内容含义 |
provision log | 用户日志 | 用户在函数初始化阶段打印的日志内容,在预置实例场景下会被记录在日志中。 |
ERROR RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx Result:xxx | 平台日志 | 预置实例失败原因,预置实例成功时无 ERROR 日志。 |
Provisioned Report RequestId: c6af0fb4-1c07-4a92-8307-xxxxxxxxxxxx Coldstart: 640ms (PullCode: 119ms InitRuntime: 2ms InitFunction: 519ms) Memory: 640MB MemUsage: 5.14MB | 平台日志 | 预置实例执行情况日志,Coldstart 为预置实例总耗时。其中 PullCode 为预置实例过程中拉取用户函数和层代码耗时或拉取镜像耗时,InitRuntime 为预置实例过程中平台耗时,InitFunction 为预置实例过程中用户代码执行耗时。Memory 为函数配置内存,MemUsage 为预置阶段运行内存。该日志仅在预置场景下会输出。 |
以 Python
运行环境的 Web 函数,打印一行初始化日志及一行调用日志为例,代码如下:
from flask import Flaskapp = Flask(__name__)print("init log")
@app.route('/')def hello_world(): return 'Hello World'
if __name__ == '__main__': app.run(host='0.0.0.0',port=9000)
预置实例场景下输出的日志结构如下(仅展示 SCF_Message
字段内容):
* Serving Flask app "app" (lazy loading)* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off* Running on http://0.0.0.0:9000/ (Press CTRL+C to quit)init logPrevisioned Report RequestId:09c346d3-8417-49c5-8569-xxxxxxxxxxxx Coldstart: 640ms (PullCode: 119ms InitRuntime: 2ms InitFunction: 519ms) Memory: 640MB MemUsage: 5.21MB
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/149358.html