活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      云日志服务

      云日志服务

        • 产品动态
        • 产品介绍
        • 产品定义
        • 功能特性
        • 产品优势
        • 应用场景
        • 术语解释
        • 使用限制
        • 基础资源
        • 数据读写
        • 日志采集器
        • 查询与分析
        • 操作系统
        • 与其他服务关系
        • 计费说明
        • 计费概述
        • 计费模式
        • 按需计费
        • 资源包
        • 计费项
        • 计费样例
        • 欠费说明
        • 停止计费与退订
        • 计费FAQ
        • 快速入门
        • 入门概览
        • 开通云日志服务
        • 创建日志项目与日志单元
        • 日志接入
        • 查询与分析
        • 用户指南
        • 日志管理
        • 日志管理概述
        • 资源统计
        • 管理日志项目
        • 管理日志单元
        • 超额采集配置
        • 标签管理
        • 日志接入
        • 概述
        • 主机管理
        • 主机组管理
        • 采集器安装
        • 采集器管理
        • 接入云主机-文本日志
        • 接入云容器引擎-应用日志
        • 日志结构化解析
        • 单行全文模式
        • 多行全文模式
        • 单行分隔符模式
        • 单行正则模式
        • 多行正则模式
        • JSON模式
        • Nginx分词
        • 日志主题
        • 自定义日志时间
        • API接入
        • API接入概述
        • 访问地址(Endpoint)
        • 上报日志
        • SDK接入
        • SDK接入概述
        • 云日志服务Go SDK
        • 云日志服务Java SDK
        • 云日志服务Python SDK
        • 云日志服务C++ SDK
        • 云日志服务Log4j2 SDK
        • 云日志服务Logback SDK
        • 云日志服务Logging handler SDK
        • 云日志服务C SDK
        • 云日志服务.NET SDK
        • 云日志服务PHP SDK
        • 云日志服务 node.js SDK
        • 错误码
        • 其他接入方式
        • Systemd Journal日志采集
        • 使用Syslog协议(采集器)上传日志
        • 通过对象存储导入日志
        • 通过kafka导入日志
        • Windows事件日志采集
        • Nginx日志采集
        • 云服务日志接入
        • 云服务操作日志
        • 对象存储访问日志
        • 查询与分析
        • 日志查询
        • 日志查询
        • 上下文查询
        • 查询语法
        • SQL统计分析
        • 概述
        • SQL语法
        • 交互模式构造分析场景
        • 基础分析-字段筛选&过滤
        • 基础统计-指标统计
        • 基础统计-分组统计
        • 高级统计-日志占比
        • 高级统计-TopN
        • 高级统计-时间趋势
        • 经典分析样例
        • 内置保留字段
        • 索引配置
        • 日志聚类
        • 日志可视化
        • 可视化概述
        • 统计图表
        • 概述
        • 表格
        • 柱状图
        • 时序图
        • 饼图
        • 流图
        • 数值图
        • 散点图
        • 仪表盘
        • 创建仪表盘
        • 添加过滤器
        • 添加可视化图表
        • 权限管理
        • 数据加工
        • 数据加工概述
        • 基本概念
        • 创建数据加工任务
        • 管理数据加工任务
        • 数据加工语法
        • 概述
        • 流程控制函数
        • 事件操作函数
        • 字段操作函数
        • 事件操作函数
        • 操作符函数
        • 事件检查函数
        • 转换函数
        • 算术函数
        • 字符串函数
        • 日期时间函数
        • 正则表达式函数
        • 特定结构化数据函数
        • 编码解码函数
        • 日志转储
        • 概述
        • 转储至分布式消息服务Kafka
        • 转储至对象存储ZOS
        • 日志告警
        • 概述
        • 通知组管理
        • 通知策略管理
        • 告警规则
        • 告警历史
        • 告警事件历史
        • 告警发送历史
        • 静默策略
        • 最佳实践
        • 将本地日志迁移到云日志服务
        • 优化查询性能
        • 查询Log4j日志
        • 查询分析Nginx访问日志
        • 数据加工-日志过滤
        • 数据加工-为日志空缺字段赋值
        • 数据加工-为日志不存在的字段填充默认值
        • 告警-出现关键字即触发告警
        • 告警-根据关键字出现的次数设置告警
        • 基于业务日志的运维分析
        • API参考
        • API使用说明
        • 常见问题
        • 售前常见问题
        • 日志管理
        • 云日志服务使用建议
        • 云日志服务LTS对比自建ELK,应该如何选择?
        • 如何从第三方云厂商将日志搬迁到天翼云?
        • 数据采集
        • 常见问题
        • 如何查看日志采集器的运行状态?
        • 云日志服务可以采集哪类日志?支持采集哪些文件类型?
        • 云主机采集器无法连通如何处理?
        • 采集器安装失败如何处理?
        • 如何创建云日志服务终端节点?
        • 主机接入配置完成后未采集到日志如何处理?
        • 如何查看与升级插件版本?
        • 主机组中新增云主机后,如何启动日志采集?
        • 如何获取访问密钥(AK/SK)?
        • 数据存储
        • 查询与分析
        • 常见问题
        • 为什么检索不到日志?
        • 查询语法相关问题
        • 数据加工
        • 日志转储
        • 日志告警
        • 常见问题
        • 为什么出现漏告警或者误告警?
        • 触发告警成功,但是通知失败,如何处理?
        • 相关协议
        • 产品服务协议
        • 产品服务等级协议
          无相关产品

          本页目录

          帮助中心云日志服务用户指南日志接入SDK接入云日志服务Logging handler SDK
          云日志服务Logging handler SDK
          更新时间 2024-09-02 10:45:28
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2024-09-02 10:45:28
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本文主要介绍Logging handler SDK使用方法。

          Python logging handler概述

          Python logging 模块提供了一套灵活的日志记录系统,允许开发者在应用程序中记录不同级别的消息,如调试信息、警告、错误等。使用Python SDK提供的logging Handler可以使Python程序在日志在不落盘的情况下自动上传到日志服务上,这种上传方式具有实时性、异步性、吞吐量大、配置简单等特点。使用这部分功能,只需要配置handler目录下的logging.ini 内的几个关键配置即可直接使用。

          使用步骤

          1、安装ctyun-lts-python-sdk:1.6.0,目录中包含ctyun-lts-python-sdk-1.6.0.tar.gz。

          pip install ctyun-lts-python-sdk-1.6.0.tar.gz
          

          如果安装失败,可单独安装requirements_py3.txt,详情可参考python SDK 概述-2.2下载和安装。

          pip install -r requirements_py3.txt
          

          2、修改handler 中的 logging.ini 中的自定义配置,里面包含了与日志上传服务相关的5个参数,这和使用SDK上传日志类似。

          ;替换下面5个参数
          args=('your endpoint','your access_key','your secret_key', 'log_project', 'log_unit',)
          

          3、执行example/sample_logging_handler.py 示例即可。

          logging.ini 配置

          在用例中自定义配置了三种handler :consoleHandler、asyncHandler、syncHandler。

          1、consoleHandler的配置中class=StreamHandler,这代表会将logger 日志输出到控制台。

          2、syncHandler 配置中的 class=handler.AsyncHandler,这代表handler 将会去使用SyncHandler 类的配置进行日志上传,这个类使用的是同步单线程将logger 的日志上传到云日志服务中。

          3、asyncHandler配置中的 class=handler.AsyncHandler,这代表handler 将会去使用AsyncHandler 类的配置进行日志上传,这个类使用的是异步批量多线程方式将logger 的日志上传到云日志服务中。

          用户使用这个功能的时候,需要修改handler 中的args 配置。里面包含了与日志上传服务相关的5个参数,这和使用SDK上传日志类似。

          ;替换下面5个参数
          args=('your endpoint','your access_key','your secret_key', 'log_project', 'log_unit',)
          ;使用环境变量
          ;args=(os.environ.get('LTS_ENDPOINT', '',),os.environ.get('LTS_ACCESSKEY', ''),
             os.environ.get('LTS_SECRETKEY', ''),os.environ.get('LTS_LOGPROJECT', ''),
             os.environ.get('LTS_LOGUNIT', ''))
          
          

          当然如果对安全性要求较高,强烈建议不要将明文access_key 和 secret_key 写在logging.ini配置中,代替使用系统变量存放。可使用args=(os.environ.get('LTS_ENDPOINT', '',)获取系统变量。

          [loggers]
          keys=root,sync_logging,async_logging
          
          [handlers]
          keys=consoleHandler, asyncHandler,syncHandler
          
          [formatters]
          keys=consoleFormatter,ltsFormatter
          
          [logger_root]
          level=DEBUG
          handlers=consoleHandler
          
          [logger_async_logging]
          level=INFO
          handlers=consoleHandler,asyncHandler
          qualname=async_logging
          propagate=0
          
          [logger_sync_logging]
          level=INFO
          handlers=consoleHandler,syncHandler
          qualname=sync_logging
          propagate=0
          
          [handler_consoleHandler]
          class=StreamHandler
          level=DEBUG
          formatter=consoleFormatter
          args=(sys.stdout,)
          [handler_asyncHandler]
          class=handler.AsyncHandler
          formatter=ltsFormatter
          ;替换下面5个参数
          args=('your endpoint','your access_key','your secret_key', 'log_project', 'log_unit',)
          
          [handler_syncHandler]
          class=handler.SyncHandler
          formatter=ltsFormatter
          ;替换下面5个参数
          args=('your endpoint','your access_key','your secret_key', 'log_project', 'log_unit',)
          
          [formatter_consoleFormatter]
          format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
          
          [formatter_ltsFormatter]
          format=%(asctime)s - %(levelname)s - %(threadName)s - %(filename)s[line:%(lineno)d] - %(message)s
          

          log handler 的使用示例

          在完成前面logging.ini 的配置之后,就可以直接使用本服务将logger 日志直接上传到云日志服务中去。由于定义的三个handler功能各不同,使用时也有细微差异。

          示例代码:log handler 使用(example 目录下的 sample_logging_handler.py)

          import logging.config
          import time
          
          # 加载logging.ini配置文件
          logging.config.fileConfig("../handler/logging.ini")
          
          # 获取logger实例,异步发送logger日志
          logger = logging.getLogger('async_logging')
          
          # 获取logger实例,同步发送logger日志
          logger2 = logging.getLogger('sync_logging')
          
          # 获取logger实例,将日志输出到日志控制台
          logger3 = logging.getLogger()
          
          
          logger.info("log message,level:info")
          logger.warning("log message,level:warning")
          logger.error("log message,level:error")
          
          try:
              result = 10 / 0     # 可能引发异常的代码
          except Exception as e:
              # 或者
          logger.error("An error occurred: ",  exc_info=True)  # 采集异常信息
          
          
          logger2.info("log2 message,level:info")
          logger2.error("log2 message,level:error")
          
          
          logger3.debug("log2 message,level:debug")
          logger3.info("log2 message,level:info")
          logger3.error("log2 message,level:error")
          time.sleep(5)
          
          logging.shutdown()
          

          日志格式如下所示:其中__ user_agent 、__ ts 、__ message__ 是云日志服务的固定字段,其余字段是将message进行分词处理后的字段。

            __user_agent__  : lts-python-logging-handler/1.5.1
            exception  :  {错误信息,此处省略} ZeroDivisionError: division by zero
            file_name  : sample_logging_handler.py
            level  : ERROR
            message  : An error occurred:
            thread  : MainThread
            time  : 2024-06-21,17:52:48
            __ts__  : 2024-06-21 17:52:48.920
            __message__  : 2024-06-21 17:52:48,920 - ERROR - MainThread - sample_logging_handler.py[line:26] - An error occurred: {错误信息,此处省略}
          

          加载logging.ini配置

          此操作是用于加载logging.ini 配置文件,文件处于handler 目录下。加载这份配置才能够使用后续功能。

          logging.config.fileConfig("../handler/logging.ini")
          

          获取logger 实例:root

          此操作是用于使用原生的logger 功能,即不将logger日志上传到云日志服务。其中root参数可以省略。

          logger = logging.getLogger()
          # 下面这个格式也生效
          logger = logging.getLogger('root')
          # logger 使用
          logger.info("log message,level:info")
          

          获取logger 实例:sync_logging

          此操作是使用同步单线程的形式将logger日志上传到云日志服务(同时也会输出到控制台),这种方式调用logger生成一条日志,就会发送一次http请求将日志上传。这种方式简单,但当调用频率很高时,会出现阻塞情况,发送效率不高。

          logger = logging.getLogger('sync_logging')
          
          logger.info("sync log message 1,level:info")
          logger.info("sync log message 2,level:info")
          logger.info("sync log message 3,level:info")
          

          获取logger 实例:async_logging

          此操作是使用异步批量多线程的形式将logger日志上传到云日志服务(同时也会输出到控制台),这种方式调用logger生成一条日志后,会发送到一个日志累加器内,当日志累加器的日志量超过预设的大小或条数,或者等待指定时间后,日志累加器的日志会被打包成一个任务,然后开启一个线程将这些日志一次批量发送到云日志服务。这种方式效率高,异步非阻塞,非常适合需要频繁上传日志的场景。

          logger = logging.getLogger('async_logging')
          
          logger.info("async log message 1,level:info")
          logger.info("async log message 2,level:info")
          logger.info("async log message 3,level:info")
          

          捕获异常信息Exception

          此操作是当发送异常时,可以使用logger.error()将异常信息也进行上传。这种方式可以有效记录异常发生时的情况。其中需要配置exc_info=True这个参数。

          try:
              result = 10 / 0
          except Exception as e: 
          logger.error("An error occurred:" exc_info=True) 
          

          修改日志上传的level级别

          修改logging.ini 配置中对应的level为WARN 则只上传WARN及以上级别日志

          [logger_async_logging]
          level=WARN
          handlers=consoleHandler,asyncHandler
          qualname=async_logging
          propagate=0
          

          Logging.shutdown()

          此操作是关闭所有的logger,使用这个方法会关闭所有日志,除了原生的logger.getLogger()。如果使用了async_logging 这个异步上传的handler,请在不需要使用的时候调用logging.shutdown()方法进行关闭,这样可以有效减少资源消耗。

          logging.shutdown()
          
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  云日志服务Logback SDK
          下一篇 :  云日志服务C SDK
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明