📜  Python|将日志记录添加到Python脚本

📅  最后修改于: 2022-05-13 01:54:22.349000             🧑  作者: Mango

Python|将日志记录添加到Python脚本

在本文中,我们将学习如何使用脚本和简单的程序将诊断信息写入日志文件。

代码 #1 :使用日志记录模块将日志记录添加到一个简单的程序中

import logging
  
def main():
    # Configure the logging system
    logging.basicConfig(filename ='app.log',
                        level = logging.ERROR)
      
    # Variables (to make the calls that follow work)
    hostname = 'www.python.org'
    item = 'spam'
    filename = 'data.csv'
    mode = 'r'
      
    # Example logging calls (insert into your program)
    logging.critical('Host %s unknown', hostname)
    logging.error("Couldn't find %r", item)
    logging.warning('Feature is deprecated')
    logging.info('Opening file %r, mode = %r', filename, mode)
    logging.debug('Got here')
      
if __name__ == '__main__':
main()
  • 五个日志调用( critical()、error()、warning()、info()、debug() )按降序表示不同的严重级别。
  • basicConfig()的 level 参数是一个过滤器。以低于此设置的级别发出的所有消息都将被忽略。
  • 每个日志记录操作的参数是一个消息字符串,后跟零个或多个参数。在制作最终日志消息时,%运算符用于使用提供的参数格式化消息字符串。

如果您运行上面的代码,文件app.log的内容将如下 -

CRITICAL:root:Host www.python.org unknown
ERROR:root:Could not find 'spam'

要更改输出或输出级别,请将参数更改为basicConfig()调用,如下面的代码所示 -

代码#2:

logging.basicConfig( 
        filename = 'app.log', 
        level = logging.WARNING, 
        format = '%(levelname)s:%(asctime)s:%(message)s')

输出 :

CRITICAL:2012-11-20 12:27:13, 595:Host www.python.org unknown
ERROR:2012-11-20 12:27:13, 595:Could not find 'spam'
WARNING:2012-11-20 12:27:13, 595:Feature is deprecated

日志记录配置直接硬编码到程序中。要从配置文件配置它,请将basicConfig()调用更改为以下内容。

代码#3:

import logging
import logging.config
  
def main():
    # Configure the logging system
    logging.config.fileConfig('logconfig.ini')
    ...

现在制作一个如下所示的配置文件 -

[loggers]
keys=root

[handlers]
keys=defaultHandler

[formatters]
keys=defaultFormatter

[logger_root]
level=INFO
handlers=defaultHandler
qualname=root

[handler_defaultHandler]
class=FileHandler
formatter=defaultFormatter
args=('app.log', 'a')

[formatter_defaultFormatter]
format=%(levelname)s:%(name)s:%(message)s

如果要更改配置,只需根据需要编辑文件即可。

暂时忽略日志模块大约有一百万个高级配置选项,这个解决方案对于简单的程序和脚本来说已经足够了。只需确保在进行任何日志记录调用之前执行basicConfig()调用,程序就会生成日志记录输出。


参考: https://docs。 Python.org/3/howto/logging-cookbook.html