in aliyun/log/etl_core/trans_comp/trans_json.py [0:0]
def format_add_kv(self, event, fmt, current, value, parent_list, parent_rlist, sep, prefix, suffix):
if self._skip_keys(current, parent_list):
logger.info(u"json_transformer: 'key' {0} is not in include keys '{1}' or in exclude keys '{2}', skip it."
.format(current, self.include_node, self.exclude_node))
return
ret = None
if isinstance(fmt, (six.text_type, six.binary_type)):
fmt = json_transformer.FMT_MAP.get(fmt.strip().lower(), fmt)
try:
if isinstance(fmt, (six.text_type, six.binary_type)):
ret = fmt.format(parent_list=parent_list, parent_rlist=parent_rlist, current=current, sep=sep,
prefix=prefix, suffix=suffix), \
json_transformer._n(value)
else:
# callable formatting function
ret = fmt(parent_list=parent_list, parent_rlist=parent_rlist, current=current, sep=sep,
prefix=prefix, suffix=suffix), \
json_transformer._n(value)
except Exception as ex:
logger.info(u"json_transformer: fail to format with settings: '{0}'".format((fmt, current, value,
parent_list, sep, prefix,
suffix)))
elif inspect.isfunction(fmt):
try:
ret = fmt(parent_list, current, value)
except Exception as ex:
logger.info(u"json_transformer: fail to call formatting string: {0} wuth parameters: {1}"
.format(fmt, (parent_list, current, value)))
if ret and len(ret) == 2:
k, v = ret
event[json_transformer._n(k)] = json_transformer._n(v)
else:
logger.info(u"json_transformer: unexpected format result: {0}, fmt: '{1}', k: '{2}', v: '{3}', skip it"
.format(ret, fmt, current, value))