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

问题描述 投票:0回答:2

在有关如何使用 opencensus-python 将跟踪提交到 Azure Application Insights 的

文档
中,详细说明了如何向
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
中删除默认包含的项目的预期方法是什么?即像
fileName
process
这样的东西?

python azure azure-application-insights azure-monitoring opencensus
2个回答
3
投票

通过检查源代码,这些属性似乎很难避免创建,但可以通过后处理

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


0
投票

这是一个解决方案,您仍然可以在执行时在

logger.error()
中提供 custom_dimensions:

import logging
from opencensus.ext.azure.log_exporter import AzureLogHandler
    
def remove_items(envelope):
    for k in ['process', 'module', 'fileName', 'lineNumber', 'level']: 
        envelope.data.baseData.properties.pop(k)
    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', custom_dimensions={'foo': 'bar'})
© www.soinside.com 2019 - 2024. All rights reserved.