如何创建日志文件来记录 python 中的每个步骤?

How can a create a log file to log every steps in python?

我是 运行 一个 python 脚本,我想记录 python 程序的每个步骤。

例如,假设我有一个程序

def main()
    if do:
       do the work
       if yes:
          do the work
          for list os.listdir(dir):
              sys.system("python " + dirOfPython + " " + dirOflists)

我想记录我的程序在哪里..以及它们当前正在做什么。

在我的日志中我想要类似

的东西
Inside of main()
inside of if do:
doing work
inside of if yes:
doing work
inside of for each files/dirs calling list
calling sys.system python
executing python with give dir path

不完全是上面的内容..但是某种日志来查看程序正在做什么,如果它失败了,这个日志将包含错误消息的失败日志

我只想要一个正式的日志文件

你知道,有一个 logging 模块!

import logging
import os

logging.basicConfig(filename='tmp.log',
                    format='%(levelname)s %(asctime)s :: %(message)s',
                    level=logging.DEBUG)
# format is a formatter string, level shows what level of logs it will record
# in this case it is everything!
# Levels are as follows from most to least critical
#   CRITICAL
#   ERROR
#   WARNING
#   INFO
#   DEBUG

do = True
yes = True
do_the_work = lambda: None

def main():
    logging.debug("Inside of main()")
    if do:
        logging.debug("Inside of if do:")
        do_the_work()
        logging.debug("doing work")
        if yes:
            logging.debug("inside of if yes:")
            do_the_work()
            logging.debug("doing work")
            for list in os.listdir('.'): # there were three files in my folder
                logging.debug("inside of for each files/dirs calling list")
                print('python')
                logging.debug("calling sys.system python")
                logging.debug("executing python with give dir path")

这将产生以下输出:

DEBUG 2015-03-18 12:26:59,272 :: Inside of main()
DEBUG 2015-03-18 12:26:59,272 :: Inside of if do:
DEBUG 2015-03-18 12:26:59,272 :: doing work
DEBUG 2015-03-18 12:26:59,272 :: inside of if yes:
DEBUG 2015-03-18 12:26:59,272 :: doing work
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path
DEBUG 2015-03-18 12:26:59,272 :: inside of for each files/dirs calling list
DEBUG 2015-03-18 12:26:59,272 :: calling sys.system python
DEBUG 2015-03-18 12:26:59,272 :: executing python with give dir path

您可以轻松捕获异常并让它们抛出更多关键事件。

try:
    really_important_method()
except EndOfTheWorldError:
    logging.critical("Duck and cover boys, it's gonna blow.")

我认为在程序中你需要知道当前正在执行什么,程序的流程是什么,哪里出了问题,这就是日志发挥作用的地方。为此,您可以使用这个 pip 库函数记录器。

(正在安装) 使用以下命令安装它:

pip install function-logger

(导入语句) 在你的代码中导入这个库

from function_logger import function_logger

(USAGE)如何使用 在任何你想查看日志的函数上像装饰器一样使用它 ex:

@function_logger(logger)
def log_function(name=None, age=None):
    logger.debug("Inside log function")
    return dict(bmi=19)

输出:

Inside Function log_function with parameters: (),{'name': 'hello', 'age': 23'}
Inside log function
Function: log_function returns 19