我不明白Python日志记录模块如何读取其执行代码 -- python 领域 和 python-3.x 领域 和 logging 领域 和 module 领域 相关 的问题

I don't understand how python logging module reads its execution code


2
vote

问题

中文

下面是我的代码

  MarketDataProvider3  

当我运行程序时,它会创建文件'logging2测试',但它没有记录日志,虽然我已经告诉程序在第19行录制日志,但是>真的可以使用一些解释。谢谢

英文原文

This below is my code

 logging.basicConfig(filename='logging2 text', level=logging.INFO,                     format='%(levelname)s:%(message)s')  class Employee:     def __init__(self, firstname, lastname):         self.firstname = firstname         self.lastname = lastname      @property     def fullname(self):         return('{} {}'.format(self.firstname, self.lastname))      @property     def email(self):         return('{}@gmail.com'.format(self.fullname))          logging.info('Employee info:\nFullname: {}\nEmail: {}'.format(self.fullname, self.email))  emp1 = Employee('Joe', 'Mama') 

When I run the program, it creates the file 'logging2 test' but it records no logs, only a blank file although i've already tell the program to record the logs on line 19, logging.info('Employee info:\nFullname: {}\nEmail: {}'.format(self.fullname, self.email)) really could use some explanation. Thanks

           

回答列表

2
 
vote
vote
最佳答案
 

有两个问题。在 return 之后,您记录,因此从未达到日志线。

但您的代码还包含无限递归。发生这种情况是因为它调用 email email 属性的 self.email logging 行中。

要突破此问题,您需要知道电子邮件地址在日志时的时间。
  @property def email(self):     email = '{}@gmail.com'.format(self.fullname)     logging.info('Employee info: Fullname: {} Email: {}'.format(self.fullname, email))     return(email)   

本集 email 到函数内的变量,并在日志和返回语句中使用该变量。

然后当您访问电子邮件属性时,日志线将按预期显示。
  print(empl.email)   

日志以下内容:

  INFO:Employee info: Fullname: Joe Mama Email: Joe Mama@gmail.com   
 

There are two issues. You log after return and hence the log line is never reached.

But your code also contains an infinite recursion. This happens because it calls self.email inside of the email property in the logging line.

To break out of this, you need to know what the email address is at the time of the log.

@property def email(self):     email = '{}@gmail.com'.format(self.fullname)     logging.info('Employee info:\nFullname: {}\nEmail: {}'.format(self.fullname, email))     return(email) 

This sets email to a variable inside the of the function and uses that in both the log and the return statements.

Then when you access the email property, the log line will show as expected.

print(empl.email) 

Logs the following:

INFO:Employee info: Fullname: Joe Mama Email: Joe Mama@gmail.com 
 
 

相关问题

0  使用Pandas将对象(数值)转换为DateTime  ( Convert object numeric value to datetime using pandas ) 
我的数据具有时间表,如下所示,如何将其转换为使用Pandas 的日期和时间 ...

0  腌制物体的大小wrt gae blobproperty  ( Size of pickled object wrt gae blobproperty ) 
我正在挑痒一个python dictonary,并将它存储到gae blobproperty。 blobproperty有一个 1mb大小限制。我想以编程方式检查我的对象将在1MB限制中'fit'。 var_dump($ECB_rates); 5 但是len(pickled_object)测量是什么? (字符...

2  rq工作人员扔“valueerror”  ( Rq worker throwing valueerror ) 
我试图在我的烧瓶申请上获取RQ / RQ工作者。我试图将其缩至一个非常简单的测试用例。这是一般的想法: 用户访问 /test 页面。触发要排队的作业并返回排队作业的 job_key 工人( worker.py )处理排队的作业。 用户可以访问 /retrieve/<job_key> 页面来检索结果。 [这未显示...

0  服务兼容性意外退出。状态代码是:-9  ( Service chromedriver unexpectedly exited status code was 9 ) 
我对 9988876612 进行了诸多问题,用于使用solemiumings。 $http.get()3 已安装并将其放在与Python文件相同的文件夹中。似乎加载jupyter小区几秒钟的所有建议都被拒绝了以下消息: $http.get()4 其中我使用 $http.get()5 下载它们。在这里我的代码: ...

3  如何使用名称创建多个文件夹,并将多个zips提取到每个不同的文件夹,使用python?  ( How to create multiple folders with names and extract multiple zips to each dif ) 
我无法创建许多不同的目录,了解包含不同栅格数据的许多不同的ZIP文件夹,然后将所有zips从清洁脚本中的新文件夹中提取到新文件夹。 我已经完成了我的代码的任务是非常长而凌乱的。我需要具有标有 99887663 , 99887664 等的文件夹,然后在这些目录中,我需要子文件夹,例如 99887665 ,<代码> N...

2  将主列表与CSV行中的单个列表进行比较  ( Comparing master list to individual lists in a csv row ) 
我正在尝试自动化我的教室,我正在击中墙壁,将我的总学生列表与课程和学生的DataFrame进行比较。最终,代码将返回全类类列表。 首先,我的学生总计列表称为 all_kids 。 all_kids=['Kevin', 'Jack', 'Caroline', 'Grace', 'Harry', 'Sam'] df_...

1  在Python中转换秒和时间  ( Convert seconds to date and time in python ) 
我有一个包含秒的列的数据帧,我想将列转换为日期和时间,并使用包含日期和时间的列保存文件.I在几秒钟内有一个列的列 time 2384798300 1500353475 7006557825 1239779541 1237529231 我能够这样做,但仅通过插入我想要使用以下代码转换的秒数: da...

0  有没有办法从IEX获取实时数据?  ( Is there a way to get real time data from iex ) 
我刚刚学会使用 iex-cloud-api 但是当我打印出结果时,我一天只得到它们。我想在一分钟内得到它们。我的代码基本上如下所示: start = datetime.date(2020, 12, 20) df = get_historical_data(stocksymbol, ...

0  将通用路径设置为Python中的文件(没有循环)  ( Setting universal path to file in python without for loop ) 
我正在尝试设置我的工作目录,以便它将在所有机器上是通用的 - 但没有循环。我正在使用以下代码,基于此线程:在目录中查找特定路径在Python import os try: ...

7  修改冷却台装饰器以用于方法而不是功能  ( Modifying a cooldown decorator to work for methods instead of functions ) 
我正在尝试创建一个装饰器,它可以用于对它们应用"Cooldown" 的方法,这意味着它们不能在特定持续时间内多次调用。我已经为函数创建了一个: >>> @cooldown(5) ... def f(): ... print('f() was called') ... >>> f() f() was cal...

1  从文本文件创建用户名  ( Creating username from text file ) 
我只知道我是一个对这个的numpty,所以忍受了我。到目前为止已经尝试过我最好的! 与文本文件中的读取行与姓氏和姓氏(有些具有中间名)以生成in inneded版本的foreName和任何中间名称的用户名。如果有重复的话,我们从他们的姓氏中拉到第一个字母。如果仍然重复,我们后缀1,然后从那里开始计算更多重复 - 我只...

0  将一个3D坐标系旋转到另一个  ( Rotate one 3d coordinate system to another ) 
我在一个坐标系中有一组点,我想将它们旋转到Python中的另一个坐标系。基于此答案我写下以下python函数: def change_of_basis(points, initial, final): ''' rotate points/vectors in a 3D coordinate sys...

0  pyabodb - 如何使用扫描(attributes_to_get = [...])  ( Pynamodb how to use scanattributes to get ) 
我正在使用 pynamodb==3.3.3 要使用 attributes_to_get 条件扫描项目,但是我无法解决: File "/Users/user/Documents/project/script.py", line 250, in filter_writable_snapshots exis...

9  在Python中线性拟合,在x和y坐标中具有不确定性[关闭]  ( Linear fitting in python with uncertainty in both x and y coordinates ) 
关闭。这个问题不符合堆栈溢出指南。它目前不接受答案。 想要改进这个问题?更新问题,所以它是关于堆栈溢出的主题。 closed 1年前。 ...

0  Python数据类型类型代码综合表或资源  ( Python data type type codes comprehensive table or resource ) 
今天,在其他几个场合,我收到了这样的错误: {TypeError}ufunc subtract cannot use operands with types dtype('<M8[us]') and dtype('O'). 在其他日子里,我想做一些printf类型命令,并处于丢失的损失,该字符用于某些钝数据类...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.