小白教程

 找回密码
 立即注册

logging 模块

发布者: 小白教程

如果您希望将一些调试消息或重要消息存储在某处,以便可以检查程序是否已按预期运行,该怎么办?您如何将这些消息“存储在某处”?这可以通过使用logging模块来实现

另存为stdlib_logging.py

import os
import platform
import logging

if platform.platform().startswith('Windows'):
    logging_file = os.path.join(os.getenv('HOMEDRIVE'),
                                os.getenv('HOMEPATH'),
                                'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'),
                                'test.log')

print("Logging to", logging_file)

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s : %(levelname)s : %(message)s',
    filename=logging_file,
    filemode='w',
)

logging.debug("Start of the program")
logging.info("Doing something")
logging.warning("Dying now")

输出:

$ python stdlib_logging.py
Logging to /Users/swa/test.log

$ cat /Users/swa/test.log
2014-03-29 09:27:36,660 : DEBUG : Start of the program
2014-03-29 09:27:36,660 : INFO : Doing something
2014-03-29 09:27:36,660 : WARNING : Dying now

cat命令在命令行用于读取“test.log中”文件。如果该cat命令不可用,则可以test.log在文本编辑器中打开文件。

这个怎么运作

我们使用标准库中的三个模块-os用于与操作系统进行交互的platform模块,用于获取有关平台信息(即操作系统)的logging模块以及用于记录信息模块

首先,我们通过检查返回的字符串来检查我们正在使用哪个操作系统platform.platform()(有关更多信息,请参见import platform; help(platform))。如果是Windows,我们将找出主驱动器,主文件夹和要在其中存储信息的文件名。将这三个部分放在一起,就可以得到文件的完整位置。对于其他平台,我们只需要知道用户的主文件夹,就可以获取文件的完整位置。

我们使用os.path.join()函数将位置的这三个部分放在一起。使用特殊功能而不是仅将字符串加在一起的原因是因为此功能将确保完整位置与操作系统预期的格式匹配。注意:本书其他地方使用join()' method we use here that's part of theos module is different from the string methodjoin()`。

我们将logging模块配置为将所有消息以特定格式写入到我们指定的文件中。

最后,我们可以放置用于调试,信息,警告甚至关键消息的消息。程序运行后,即使没有任何信息显示给运行该程序的用户,我们也可以检查该文件,并且知道该程序中发生了什么。

上一篇:sys 模块下一篇:特殊方法

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-11-24 12:31 , Processed in 0.045881 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

返回顶部