使用应用程序接口发送日志
您可以使用提取 API 将日志发送到IBM Cloud Logs实例。
使用承载令牌进行身份验证
您必须获取IBM Cloud® Identity and Access Management (IAM) 访问令牌来验证您的请求。
要使用IBM CloudCLI 获取令牌,请完成以下步骤:
-
登录到 IBM Cloud。
确保您登录的实体具有IBM Cloud Logs服务的 "
Sender角色。 -
运行以下命令:
ibmcloud iam oauth-tokens -
在 HTTP 请求的授权“头”中加入该令牌,其格式为:Bearer
.
例如,您可以通过运行以下 CLI 命令来检索 IAM 持有者令牌并将其导出为环境变量:
export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`
使用cURL发送日志
下表概述了端点详细信息:
| 详细信息 | 值 |
|---|---|
URL |
<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles |
HTTP Method |
POST |
头 Content-Type |
application/json |
头 Authorization |
Bearer $IAM_TOKEN |
Where
INSTANCE_ID:您想要发送日志的IBM Cloud Logs实例的 GUID。REGION:IBM Cloud Logs实例所在的区域。IAM_TOKEN:用于请求授权发送日志 的 IAM 承载令牌。 需要许可logs.data.send。
使用以下cURL命令发送日志行:
curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
"applicationName": "ENTER_APPLICATION_NAME",
"subsystemName": "ENTER_SUBSYSTEM_NAME",
"severity": "ENTER_SEVERITY",
"computerName": "ENTER_VALUE",
"text": ENTER_LOG_LINE,
"category": "ENTER_VALUE",
"className": "ENTER_VALUE",
"methodName": "ENTER_VALUE",
"threadId": "ENTER_VALUE"
}]'
下表概述了您可以在请求中每个日志行包含的 JSON 对象:
| 属性名 | 属性类型 | 必需 | 更多信息 |
|---|---|---|---|
applicationName |
string |
是 | |
subsystemName |
string |
是 | |
text |
string/json |
是 | 如果您使用 Ajax 或类似技术,则可能需要使用JSON.stringify () 发送数据。 |
severity |
number |
False | 1 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – Critical如果未指定,则将使用 1 – Debug 。 |
timestamp |
number |
False | UTC 毫秒。 如果没有指定,则将使用日志到达网关的时间。 |
computerName |
string |
False | |
category |
string |
False | |
className |
string |
False | |
methodName |
string |
False | |
threadId |
string |
False | |
hiResTimestamp |
string |
False | UTC 纳秒 |
如果您未指定 severity,则日志的严重性将被分配为 1 – Debug。
每个请求最多可以发送2MB,大约相当于 3,000 个中型日志。
例如,您可以运行以下命令将日志发送到 eu-es 区域中的实例:
curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
"applicationName": "cs-rest-test3",
"subsystemName": "cs-rest-test3",
"computerName": "computer test3",
"text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
"category": "cat-1",
"className": "class-1",
"methodName": "method-1",
"threadId": "thread-1"
}]'
-v 选项提供详细输出,可以帮助您确定命令是否成功完成或是否存在授权或连接问题。