我想要做的是尝试在 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)>]
有几点需要注意:
- 日志级别高于 'DEBUG' 的日志消息会重复 2 次。否则,不显示。
- 全局中的 print() 仅显示 1 次(如预期的那样)
深入了解细节,检查具有相同日志消息的日志条目的 customDimension。
这个显示了一些自动生成的内容:
这个log_extra
在我的代码中显示:
关于如何删除所有重复项的任何建议?
造成这些情况的原因是什么?