在有关如何使用 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
这样的东西?
通过检查源代码,这些属性似乎很难避免创建,但可以通过后处理
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
。
这是一个解决方案,您仍然可以在执行时在
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'})