使用 opencensus-python 时从 Application Insights 中删除 customDimensions 项目

Remove customDimensions items from Application Insights when using opencensus-python

在关于如何使用 opencensus-python 将跟踪提交到 Azure Application Insights 的 the documentation 中,详细说明了如何将附加信息添加到 customDimensions 字段。也就是说,

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
logger.addHandler(AzureLogHandler(
    connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')
)

logger.error('blooh')
logger.error('blooh2', extra={'custom_dimensions': {'woot': 42}})

变成

在 Application Insights UI 中。

一切都很好,但是从 customDimensions 中删除默认包含的项目的预期方法是什么?即 fileNameprocess?

通过 inspection of the source code,属性似乎很难避免创建,但可以通过 post-processing 和 envelope:

删除它们
import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

custom_dimensions = {'foo': 'bar'}

def remove_items(envelope):
    envelope.data.baseData.properties = custom_dimensions
    return True

logger = logging.getLogger(__name__)
handler = AzureLogHandler(connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')
handler.add_telemetry_processor(remove_items)
logger.addHandler(handler)
logger.error('blooh')

这已在 opencensus-ext-azure 版本 1.0.5 中测试和工作。

另请注意,使用此方法,不再需要在记录时指定 extra