如何在循环中的python中的代码中添加日志信息 [英] How to add log info in the Code in python in the loop

查看:54
本文介绍了如何在循环中的python中的代码中添加日志信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  • 下面是字典

  • Below is the dictionary

有两个ID,我需要生成

There are two ids, I need to generat

提取完第一个id后,我需要获取一条信息,说明第一个id(100)已完成

Once extract of completion of first id i need to get an info saying First id(100) is completed

提取完第二个id之后,我需要获取一条信息,说明第二个id(101)已完成

Once extract of completion of second id i need to get an info saying second id(101) is completed

logger.info('提取ID'+ str(id)+'已完成')

logger.info('提取ID'+ + str(id)+'已完成')

预期

    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完成,然后我将获得提取ID'100已完成'第二个ID已完成,然后我将获得提取ID'10 已完成'`

First id completed then i will get extraction id' 100 is completed' second id completed then i will get extraction id' 10 is completed'`

**预期out_one

** Expected out_one

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

**预期out_two

** Expected 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'

推荐答案

以下代码:

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'}]

登录"output.log":

Log in 'output.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'

这篇关于如何在循环中的python中的代码中添加日志信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆