You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
iOS SDK( v2.x)
快速开始 iOS SDK(v2.x)
复制全文
下载 pdf
快速开始 iOS SDK(v2.x)
本文介绍如何快速使用日志服务 iOS SDK 实现日志采集操作。​
前提条件​
  • 已安装日志服务 iOS SDK,推荐使用最新版本的 iOS SDK。详细步骤请参考安装 iOS SDK(v2.x)。​
  • 已获取业务方的短期 STS 凭证。​
注意事项​
  • add成功只表示日志到达本地接收边界,不表示服务端已经写入。​
  • 远端结果通过 SendResult 回调返回。​
  • 生产环境应使用临时凭证,并根据业务可靠性要求选择持久化模式。​
示例代码​
本示例以创建一个 Producer、发送带唯一事件 ID 的日志、处理异步结果并安全关闭为例,介绍相关示例代码片段。​
  1. 创建目标和配置鉴权。​
  1. 创建目标。​
  • ​
    import Foundation​
    import VolcengineTLSProducer​
    ​
    let destination = Destination(​
    endpoint: "https://tls-cn-beijing.volces.com",​
    region: "cn-beijing",​
    projectID: "YOUR_PROJECT_ID",​
    topicID: "YOUR_TOPIC_ID"​
    )​
    ​
    let configuration = try ProducerConfiguration(​
    destination: destination​
    )​
    ​
  1. 配置鉴权。​
  • runtimeCredentials代表业务方的运行时凭据提供器。生产环境推荐使用临时凭证,长期 AK/SK 写入源码或配置文件会扩大泄漏面。​
  • ​
    let credentials = Credentials(​
    accessKeyID: runtimeCredentials.accessKeyID,​
    accessKeySecret: runtimeCredentials.accessKeySecret,​
    securityToken: runtimeCredentials.sessionToken​
    )​
    ​
  1. 打开 Producer。​
  • open可能创建持久化目录并恢复 WAL,因此它是异步接口。同步等待会阻塞主线程,调用应放在异步或后台路径。​
  • ​
    let producer = try await Producer.open(​
    configuration: configuration,​
    credentials: credentials​
    ) { result in​
    switch result.status {​
    case .success:​
    print("sent requestID=\(result.requestID ?? "-")")​
    case .failure:​
    print("send failed code=\(result.error?.errorCode ?? "unknown")")​
    }​
    }​
    ​
  1. 写入日志。​
  • add成功表示日志已在本地被接收,不表示服务端已经写入。服务端结果由onSendResult回调返回。​
  • ​
    let eventID = UUID().uuidString​
    let event = LogEvent(contents: [​
    "event_id": .string(eventID),​
    "level": .string("info"),​
    "message": .string("hello tls"),​
    "retryable": .bool(true),​
    "count": .signedInt(1)​
    ])​
    ​
    try producer.add(event)​
    ​
  • 需要尽快封批时使用 .immediate。它仍然不会等待网络响应。​
  • ​
    try producer.add(event, mode: .immediate)​
    ​
  1. 更新临时凭证(可选)。​
  • STS 凭证刷新后原子替换整组凭证。​
  • ​
    try producer.updateCredentials(​
    Credentials(​
    accessKeyID: newAccessKeyID,​
    accessKeySecret: newAccessKeySecret,​
    securityToken: newSessionToken​
    )​
    )​
    ​
  1. 正常关闭。​
  • 在正常、可控的退出路径中,停止新增日志后调用。​
  • close成功表示本地线程安全停止,不代表全部日志都已经远端送达。崩溃、强制终止或系统直接结束进程时可能没有机会调用它。持久化模式可用于恢复未确认日志。​
  • ​
    try await producer.close(timeout: 5)​
    ​
  1. 验证写入,完成从回调到服务端查询的闭环,详情请参考验证写入。​
​
最近更新时间:2026.10.27 16:04:18
这个页面对您有帮助吗?
有用
有用
无用
无用