0

我想要做的是尝试在 Azure 函数应用程序中使用 opencensus-azure 处理程序。

环境:

  • 赢10
  • 蟒蛇3.7

这是示例代码:

import logging
import os

import azure.functions as func
from opencensus.ext.azure.log_exporter import AzureLogHandler

log_extra = {
    'custom_dimensions': {
        'InvocationId': 1234321,
    }
}

logger = logging.getLogger(__name__)
if logger.hasHandlers():
    logger.handlers.clear()

# TODO: replace the all-zero GUID with your instrumentation key.
logger.addHandler(AzureLogHandler(
    connection_string=f'InstrumentationKey={os.environ.get("APPINSIGHTS_INSTRUMENTATIONKEY", None)}')
)
print(123)


def main(req: func.HttpRequest) -> func.HttpResponse:

    print(logger.handlers)

    logger.debug('debug msg', extra=log_extra)
    logger.info('info msg', extra=log_extra)
    logger.warning('warning msg', extra=log_extra)
    logger.error('error msg', extra=log_extra)
    logger.critical('critical msg', extra=log_extra)
    logger.fatal('fatal msg', extra=log_extra)
    return func.HttpResponse("received", status_code=200)

触发该功能后,我会检查应用程序洞察力的结果: 在此处输入图像描述

还有我的终端截图: 在此处输入图像描述

以下是一些让我感到困惑的点:

  • 日志级别高于 'DEBUG' 的日志消息会重复 3 次。否则,2次。
  • 全局范围内的 print() 也重复了 2 次

此外,我尝试检查日志处理程序。仅存在 1 个处理程序。

[<AzureLogHandler (NOTSET)>]


接下来,我将代码部署到 Azure 函数应用。以下是日志: 在此处输入图像描述

有几点需要注意:

  • 日志级别高于 'DEBUG' 的日志消息会重复 2 次。否则,不显示。
  • 全局中的 print() 仅显示 1 次(如预期的那样)

深入了解细节,检查具有相同日志消息的日志条目的 customDimension。

这个显示了一些自动生成的内容:

在此处输入图像描述

这个log_extra在我的代码中显示:

在此处输入图像描述


关于如何删除所有重复项的任何建议?

造成这些情况的原因是什么?

4

0 回答 0