gpt4 book ai didi

python - 我不明白 python 日志记录模块如何读取其执行代码

转载 作者:行者123 更新时间:2023-12-04 08:20:29 25 4
gpt4 key购买 nike

下面是我的代码


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')
当我运行程序时,它会创建文件“logging2 test”,但它不记录日志,只记录一个空白文件,尽管我已经告诉程序在第 19 行记录日志, logging.info('Employee info:\nFullname: {}\nEmail: {}'.format(self.fullname, self.email))真的可以用一些解释。谢谢

最佳答案

有两个问题。您在 return 之后登录因此永远不会到达日志行。
但是您的代码还包含无限递归。发生这种情况是因为它调用了 self.email email 内部logging 中的属性(property)线。
要摆脱这种情况,您需要知道日志时的电子邮件地址是什么。

@property
def email(self):
email = '{}@gmail.com'.format(self.fullname)
logging.info('Employee info:\nFullname: {}\nEmail: {}'.format(self.fullname, email))
return(email)
这套 email到函数内部的一个变量,并在 log 和 return 语句中使用它。
然后,当您访问电子邮件属性时,日志行将按预期显示。
print(empl.email)
记录以下内容:
INFO:Employee info:
Fullname: Joe Mama
Email: Joe Mama@gmail.com

关于python - 我不明白 python 日志记录模块如何读取其执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65522139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com