首页 > 解决方案 > 如何在循环中的python代码中添加日志信息

问题描述

logger.info('extraction id' + str(id) + 'completed')

logger.info('extraction id' + + str(id) + 'completed')

预计出局

    test = [{"id":"100","name":"A",
    "Business":[{"id":"7","name":"Enterprise"},
    {"id":"8","name":"Customer"}],
    "policies":[{"id":"332","name":"Second division","parent":"Marketing"},
    {"id":"3323","name":"First division","parent":"Marketing"}]},
    {"id":"101","name":"B",
    "Business":[{"id":"7","name":"Enterprise"},
    {"id":"8","name":"Customer"}],
    "policies":[{"id":"332","name":"Second division","parent":"Marketing"},
    {"id":"3323","name":"First division","parent":"Marketing"}]}]

代码


def do_the_thing(lst):
    resp = []

    parents_mapper = {
        'Marketing': 'level1',
        'Advertising': 'level2'
    }

    for el in lst:
        d = {
            'id': el['id'],
            'name': el['name'],
            'Business': [],
            'level1': [],
            'level2': []
        }
        for business in el.get('Business', []):
            business_name = business.get('name')
            if business_name:
                d['Business'].append(business_name)

        for policy in el.get('policies', []):
            policy_parent = policy.get('parent')
            parent_found = parents_mapper.get(policy_parent)
            policy_name = policy.get('name')
            if parent_found and policy_name:
                d[parent_found].append(policy_name)

        resp.append(d)
    return resp


#def lambda_handler(event,context):
if __name__ == '__main__':
    import pprint
    pp = pprint.PrettyPrinter(4)
    pp.pprint(do_the_thing(test))

2个ID的输出

[
  {
    "id": "100",
    "name": "A",
    "Business": ["Enterprise", "Customer"],
    "level1": ['Second division', 'First division'],
    "level2": [None ]
  },
  {
    "id": "101",
    "name": "B",
    "Business": ["Enterprise", "Customer"],
    "level1": ['Second division', 'First division'],
    "level2": [None ]
  }
]

第一个 id 完成然后我将完成extraction id' 100 is completed'第二个 id 然后我将extraction id' 10完成'`

** 预期 out_one

extraction id' 100 is completed'
extraction id' 101 is completed'

** 预期 out_two

extraction Business' 100 is completed'
extraction policy' 100 is completed'
extraction level1' 100 is completed'
extraction Business' 101 is completed'
extraction policy' 101 is completed'
extraction level1' 101 is completed'

标签: pythonlogging

解决方案


以下代码:

import logging
logging.basicConfig(format='%(message)s', filename='output.log',level=logging.INFO)

test = [{"id":"100","name":"A",
    "Business":[{"id":"7","name":"Enterprise"},
    {"id":"8","name":"Customer"}],
    "policies":[{"id":"332","name":"Second division","parent":"Marketing"},
    {"id":"3323","name":"First division","parent":"Marketing"}]},
    {"id":"101","name":"B",
    "Business":[{"id":"7","name":"Enterprise"},
    {"id":"8","name":"Customer"}],
    "policies":[{"id":"332","name":"Second division","parent":"Marketing"},
    {"id":"3323","name":"First division","parent":"Marketing"}]}]

def do_the_thing(lst):
    resp = []

    parents_mapper = {
        'Marketing': 'level1',
        'Advertising': 'level2'
    }

    for el in lst:
        d = {
            'id': el['id'],
            'name': el['name'],
            'Business': [],
            'level1': [],
            'level2': []
        }

        for business in el.get('Business', []):
            business_name = business.get('name')
            if business_name:
                d['Business'].append(business_name)

        if business:
            logging.info(f"extraction Business' {d['id']} is completed'")

        parents = []
        for policy in el.get('policies', []):
            policy_parent = policy.get('parent')
            parent_found = parents_mapper.get(policy_parent)
            policy_name = policy.get('name')
            if parent_found and policy_name:
                d[parent_found].append(policy_name)
                if parent_found not in parents:
                    logging.info(f"extraction {parent_found}' {d['id']} is completed'")
                    parents.append(parent_found)

        if policy:
            logging.info(f"extraction policy' {d['id']} is completed'")

        logging.info(f"extraction id' {d['id']} is completed'")

        resp.append(d)

    return resp


#def lambda_handler(event,context):
if __name__ == '__main__':
    import pprint
    pp = pprint.PrettyPrinter(4)
    print("Behold Magic in Progress...")
    the_thing_result = do_the_thing(test)
    print("\nThe parsed dictionary:")
    pp.pprint(the_thing_result)

有两个输出:

输出:

Behold Magic in Progress...

The parsed dictionary:
[   {   'Business': ['Enterprise', 'Customer'],
        'id': '100',
        'level1': ['Second division', 'First division'],
        'level2': [],
        'name': 'A'},
    {   'Business': ['Enterprise', 'Customer'],
        'id': '101',
        'level1': ['Second division', 'First division'],
        'level2': [],
        'name': 'B'}]

登录“输出.log”:

extraction Business' 100 is completed'
extraction level1' 100 is completed'
extraction policy' 100 is completed'
extraction id' 100 is completed'
extraction Business' 101 is completed'
extraction level1' 101 is completed'
extraction policy' 101 is completed'
extraction id' 101 is completed'

推荐阅读