记录不是写变量值而是其他一切
Logging not writing variable values but everything else
我可以使用 logging.info('text')
成功地写入我的日志文件。
但是,调用我所有 类 中的所有 self.
变量 不会 写入日志文件。
然而,print()
将它们的值显示到控制台。
例如:logging.info('__getitem__')
出现在日志文件中ok;但不是任何变量。
import logging
def main():
logging.basicConfig(filename='ontology_tagger.log', level=logging.INFO)
logging.info('Started')
run_some_code()
logging.info('Finished')
if __name__ == '__main__':
main()
进一步调用:
logging.info('__getitem__') # CHECK LOG FILE BELOW
y = 100
print(y)
logging.info('y = ', y)
日志文件:
INFO:root:Started
INFO:root:__getitem__
INFO:root:Finished
控制台 | print(y)
:
100
日志记录不允许您直接将字符串文字与变量连接起来。
所以,而不是:
logging.info('y =', y)
使用logging
提供的格式化机制;第一个参数是一个格式字符串,然后你可以传入尽可能多的附加参数,因为它有占位符。
logging.info('y = %i', y)
当然,你也可以安排你的代码,让它只传入一个字符串,但这往往效率较低(f-strings,显式 format
,或使用 %
运算符连接字符串,这有点低效,而且如果您组合的字符串实际上没有记录在任何地方,则完全是浪费,因为您关闭了此级别的日志记录)。
logging.info(f'y = {y}')
另一种(粗略的)替代方法:
logging.info('y =')
logging.info(y)
我可以使用 logging.info('text')
成功地写入我的日志文件。
但是,调用我所有 类 中的所有 self.
变量 不会 写入日志文件。
然而,print()
将它们的值显示到控制台。
例如:logging.info('__getitem__')
出现在日志文件中ok;但不是任何变量。
import logging
def main():
logging.basicConfig(filename='ontology_tagger.log', level=logging.INFO)
logging.info('Started')
run_some_code()
logging.info('Finished')
if __name__ == '__main__':
main()
进一步调用:
logging.info('__getitem__') # CHECK LOG FILE BELOW
y = 100
print(y)
logging.info('y = ', y)
日志文件:
INFO:root:Started
INFO:root:__getitem__
INFO:root:Finished
控制台 | print(y)
:
100
日志记录不允许您直接将字符串文字与变量连接起来。
所以,而不是:
logging.info('y =', y)
使用logging
提供的格式化机制;第一个参数是一个格式字符串,然后你可以传入尽可能多的附加参数,因为它有占位符。
logging.info('y = %i', y)
当然,你也可以安排你的代码,让它只传入一个字符串,但这往往效率较低(f-strings,显式 format
,或使用 %
运算符连接字符串,这有点低效,而且如果您组合的字符串实际上没有记录在任何地方,则完全是浪费,因为您关闭了此级别的日志记录)。
logging.info(f'y = {y}')
另一种(粗略的)替代方法:
logging.info('y =')
logging.info(y)