使用UpdateLogStore接口可以更新Logstore的属性信息,例如数据保存时间、Shard分区个数等。
前提条件
您已完成以下操作:
开通日志服务。
初始化日志服务Python SDK。
参数说明
def update_logstore(self, project_name, logstore_name, ttl=None, enable_tracking=None, shard_count=None,
append_meta=None,
auto_split=None,
max_split_shard=None,
preserve_storage=None,
encrypt_conf=None,
hot_ttl=-1,
mode=None,
telemetry_type=None,
infrequent_access_ttl=-1
):
请求参数
变量 | 类型 | 是否必填 | 说明 |
project_name | String | 是 | Project名称:项目(Project)是日志服务的资源管理单元,是进行多用户隔离与访问控制的主要边界。更多信息,请参见管理Project。 |
logstore_name | String | 是 | Logstore名称在Project中全局唯一,且创建后不可修改。 其命名规则如下:
|
ttl | int | 否 | 数据保存时间,单位为天。取值范围:1~3650,如果配置为3650,表示永久保存。当设置的保存期限到达时,日志将被删除。 数据保存时间(ttl)是以下三部分时间的总和:
重要 如果调整了保存期限,日志服务会在1小时内清除所有超出新期限的数据,但是控制台首页的用量明细会在次日进行更新。例如,若原先的数据保存期限是5天,并将其改为1天,那么系统将在1小时内删除前4天的日志数据。 |
shard_count | int | 否 | 分区(Shard)数量。更多信息,请参见Shard范围。 重要 不支持通过update_logstore修改分区个数,只能通过SplitShard - 分裂Shard增加分区或MergeShard - 合并shard减少分区。 |
enable_tracking | bool | 否 | 是否启用WebTracking。
说明 WebTracking支持快速采集各种浏览器以及iOS/Android/APP的访问信息。更多信息,请参见使用Web Tracking采集日志。 |
append_meta | bool | 否 | 是否开启记录外网IP功能。
|
auto_split | bool | 否 | 是否开启自动分裂Shard。
|
max_split_shard | int | 否 | 最大分裂数:开启自动分裂Shard后,最大可支持自动分裂至256个分区。当auto_split参数为True时必须设置。 重要 当auto_split为True时必须指定。 |
encrypt_conf | dict | 否 | 加密配置数据结构,包含参数 |
telemetry_type | String | 否 | 可观测数据类型。取值包括:
重要 此参数创建后不可修改。 |
hot_ttl | int | 否 | 数据在Logstore热存储层中的存储时间,单位为天。最小为7,最大不能超过ttl的值,取值为 当数据的存储时间超过您所配置的热存储层数据保存时间后,数据将转为低频存储。关于热存储、低频存储、归档存储的概念和转换流程,请参见管理智能存储分层。
|
mode | String | 否 | 日志服务提供Standard(标准型)和Query(查询型)两种类型的Logstore。
更多信息,请参见Logstore类型对比。 |
infrequent_access_ttl | int | 否 | 数据在Logstore低频存储层中的存储时间,单位:天。低频存储数据至少需要保存30天才能转换为归档存储。更多信息,请参见管理智能存储分层。 |
返回参数
返回参数请参见:UpdateLogStore - 更新LogStore。
示例代码
from aliyun.log import LogClient
import os
# 本示例从环境变量中获取AccessKey ID和AccessKey Secret
access_key_id = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
access_key_secret = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# 日志服务的服务接入点
endpoint = "cn-hangzhou.log.aliyuncs.com"
# 实例化LogClient类
client = LogClient(endpoint, access_key_id, access_key_secret)
def update_logstore():
# 更新Logstore配置信息
ttl = 3650
enable_tracking = True
shard_count = None
append_meta = True
auto_split = True
max_split_shard = 32
preserve_storage = None
encrypt_conf = None
hot_ttl = 7
mode = None
telemetry_type = None
infrequent_access_ttl = 30
res = client.update_logstore(project_name, logstore_name, ttl, enable_tracking, shard_count,
append_meta, auto_split, max_split_shard, preserve_storage, encrypt_conf,
hot_ttl, mode, telemetry_type, infrequent_access_ttl)
res.log_print()
def get_logstore():
# 获取指定LogStore信息
res = client.get_logstore(project_name, logstore_name)
print('GetLogStoreResponse:')
print('logstore_name:', res.logstore_name)
print('shard_count:', str(res.shard_count))
print('auto_split:', res.auto_split)
print('max_split_shard:', str(res.max_split_shard))
print('ttl:', str(res.ttl))
print('hot_ttl:', str(res.hot_ttl))
print('infrequent_access_ttl:', str(res.infrequent_access_ttl))
print('auto_split:', res.enable_tracking)
print('append_meta:', res.append_meta)
if __name__ == '__main__':
project_name = 'slsproject-1'
logstore_name = "logstore-1"
update_logstore()
get_logstore()
示例返回结果
UpdateLogStoreResponse:
headers: {'Server': 'AliyunSLS', 'Content-Length': '0', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '*', 'Date': 'Mon, 17 Feb 2025 07:00:01 GMT', 'x-log-time': '1739775601', 'x-log-requestid': '67B2DE711508ADEE94320806'}
GetLogStoreResponse:
logstore_name: logstore-1
shard_count: 2
auto_split: True
auto_split: 32
ttl: 3650
hot_ttl: 7
infrequent_access_ttl: 30
auto_split: True
append_meta: True
Process finished with exit code 0
相关文档
管理Logstore的API请参见:
CreateLogStore - 创建LogStore
GetLogStore - 查看Logstore信息
UpdateLogStore - 更新LogStore
ListLogStores - 列出LogStore
DeleteLogStore - 删除LogStore
更多示例代码,请参见Aliyun Log Python SDK on GitHub。