【问题标题】:Azure Blob storage SDK: Switch off loggingAzure Blob 存储 SDK:关闭日志记录
【发布时间】:2019-02-02 17:04:23
【问题描述】:

我有一个使用 azure.storage.blob python 模块的应用程序。

显然,当我执行它时,该模块正在将其日志数据转储到我不想要的记录器中,因为它很大并且我自己的应用程序信息在它之间丢失了。

有没有办法从 azure.storage.blob python 模块中删除记录器?

日志样本:

INFO:azure.storage.common.storageclient:Client-Request-ID=d5afebc0-aa84-11e8-be16-000d3ae070ae 传出请求:方法=PUT, 路径=/marketingcloud-raw-events/2018/8/27/bounce.csv, Query={'timeout': None}, Headers={'Content-Length': '38176', 'x-ms-blob-type':'BlockBlob','x-ms-version':'2018-03-28', 'x-ms-lease-id':无,'x-ms-client-request-id': 'd5afebc0-aa84-11e8-be16-000d3ae070ae','如果匹配':无, 'If-Modified-Since':无,'If-None-Match':无,'User-Agent': 'Azure-Storage/1.3.0-1.3.1(Python CPython 2.7.15;Linux 4.15.0-1021-azure)'

【问题讨论】:

  • 你能分享一些示例日志吗?还有一些代码?你用的是什么方法?
  • 我收到类似这样的信息:INFO:azure.storage.common.storageclient:Client-Request-ID=d5afebc0-aa84-11e8-be16-000d3ae070ae 传出请求:Method=PUT, Path=/ Marketingcloud-raw-events/2018/8/27/bounce.csv,Query={'timeout': None}, Headers={'Content-Length': '38176', 'x-ms-blob-type': ' BlockBlob','x-ms-version':'2018-03-28','x-ms-lease-id':无,'x-ms-client-request-id':'d5afebc0-aa84-11e8- be16-000d3ae070ae','If-Match':无,'If-Modified-Since':无,'If-None-Match':无,'User-Agent':'Azure-Storage/1.3.0-1.3。 1(Python CPython 2.7.15;Linux 4.15.0-1021-azure)',
  • 如果您查看此文件(来自 github repo)github.com/Azure/azure-storage-python/blob/master/…,您似乎无法禁用记录器。您可以创建一个新问题来完成此更改
  • 嗨,现在有更新吗?

标签: azure azure-blob-storage


【解决方案1】:

这实际上很容易做到。您可以调整任何记录器。

只需在程序开始附近执行此操作,即可将详细程度从 INFO 切换为 WARNING,或者您喜欢的任何内容。

logging.getLogger("azure.storage.common.storageclient").setLevel(logging.WARNING)

【讨论】:

  • 这正是 OP(和我)正在寻找的东西!
  • 这对我也有帮助。
  • 这提醒我为任何 azure.storage 模块设置级别。谢谢!
【解决方案2】:

有些消息与 http 调用有关。还可以尝试以下方法:

logger=logging.getLogger('azure.core.pipeline.policies.http_logging_policy')
logger.setLevel(logging.WARNING)

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,即 azure blob API 向我的日志流发送垃圾邮件。 当您构建 BlobClient 时,您还可以传递一个自定义记录器,您可以随意控制它。

    logger = logging.getLogger("logger_name")
    logger.disabled = True
    my_blob_client = BlobClient.from_connection_string("azure blob connection string", container_name="container", blob_name="blob", logger=logger)
    

    【讨论】:

      【解决方案4】:

      正如Thomas在评论中提到的,您可以发现code的日志数据被封装在azure.storage.blob python sdk中。据我所知,没有这样的开关可以关闭这个日志记录机制。

      1.SDK可以自己封装,去掉这些多余的日志。

      2.或者您可以尝试在应用程序日志中添加特殊标签并过滤掉多余的其他日志数据。

      3.您可以将 feedback 提交到 azure 以使日志数据成为可选。

      希望对你有所帮助。

      【讨论】:

      • 现在我选择了第二个选项,因为我没有时间冒险研究 blob 库的代码,但我很想稍后再做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2018-02-17
      • 2022-08-12
      • 2018-01-26
      相关资源
      最近更新 更多