def log_record_to_envelope(self, record): envelope = Envelope( iKey=self.options.instrumentation_key, tags=dict(utils.azure_monitor_context), time=utils.timestamp_to_iso_str(record.created), ) envelope.tags['ai.operation.id'] = getattr( record, 'traceId', '00000000000000000000000000000000', ) envelope.tags['ai.operation.parentId'] = '|{}.{}.'.format( envelope.tags['ai.operation.id'], getattr(record, 'spanId', '0000000000000000'), ) properties = { 'process': record.processName, 'module': record.module, 'fileName': record.pathname, 'lineNumber': record.lineno, 'level': record.levelname, } if record.exc_info: exctype, _value, tb = record.exc_info callstack = [] level = 0 for fileName, line, method, _text in traceback.extract_tb(tb): callstack.append({ 'level': level, 'method': method, 'fileName': fileName, 'line': line, }) level += 1 callstack.reverse() envelope.name = 'Microsoft.ApplicationInsights.Exception' data = ExceptionData( exceptions=[{ 'id': 1, 'outerId': 0, 'typeName': exctype.__name__, 'message': self.format(record), 'hasFullStack': True, 'parsedStack': callstack, }], severityLevel=max(0, record.levelno - 1) // 10, properties=properties, ) envelope.data = Data(baseData=data, baseType='ExceptionData') else: envelope.name = 'Microsoft.ApplicationInsights.Message' data = Message( message=self.format(record), severityLevel=max(0, record.levelno - 1) // 10, properties=properties, ) envelope.data = Data(baseData=data, baseType='MessageData') return envelope
def log_record_to_envelope(self, record): envelope = create_envelope(self.options.instrumentation_key, record) properties = { 'process': record.processName, 'module': record.module, 'fileName': record.pathname, 'lineNumber': record.lineno, 'level': record.levelname, } if (hasattr(record, 'custom_dimensions') and isinstance(record.custom_dimensions, dict)): properties.update(record.custom_dimensions) if record.exc_info: exctype, _value, tb = record.exc_info callstack = [] level = 0 for fileName, line, method, _text in traceback.extract_tb(tb): callstack.append({ 'level': level, 'method': method, 'fileName': fileName, 'line': line, }) level += 1 callstack.reverse() envelope.name = 'Microsoft.ApplicationInsights.Exception' data = ExceptionData( exceptions=[{ 'id': 1, 'outerId': 0, 'typeName': exctype.__name__, 'message': self.format(record), 'hasFullStack': True, 'parsedStack': callstack, }], severityLevel=max(0, record.levelno - 1) // 10, properties=properties, ) envelope.data = Data(baseData=data, baseType='ExceptionData') else: envelope.name = 'Microsoft.ApplicationInsights.Message' data = Message( message=self.format(record), severityLevel=max(0, record.levelno - 1) // 10, properties=properties, ) envelope.data = Data(baseData=data, baseType='MessageData') return envelope